Ich frage mich, ob jemand mir helfen kann. Ich versuche, ein Toast-Element anzuzeigen, wenn eine SMS empfangen wird. Dieser Toast soll ein Layout enthalten, die ein Bild (SMS Icon) und 2 Textviews hat (Absender, Nachricht)Show Complex Toast von BroadcastReceiver
Wenn ich die folgende Methode aus einer Tätigkeit nennen, funktioniert es wie erwartet ...
public void showToast(Context context, String name, String message) {
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast_sms,
(ViewGroup) findViewById(R.id.toast_sms_root));
TextView text = (TextView) layout.findViewById(R.id.toastsms_text);
text.setText(message);
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
}
Allerdings, wenn ich versuche, den gleichen Code auf die gleiche Art und Weise von meinem SMSReceiver zu nennen, die ich erhalte:
The method getLayoutInflater() is undefined for the type SmsReceiver
The method findViewById(int) is undefined for the type SmsReceiver
The method getApplicationContext() is undefined for the type SmsReceiver
kann jemand bitte beraten, wie ich tihs von einer Absicht tun. Ich nehme an, dass das Problem irgendwie mit Cross-Threading zusammenhängt, aber ich bin mir nicht sicher, wie es weitergeht. Ich habe Online ein paar Beispiele gesehen, aber sie scheinen entweder Verwendung Code veraltet oder nur einfache Text anzeigen
Kann mir bitte jemand in die richtige Richtung zeigen
Vielen Dank
Gibt es Gründe/konstruktive Kritik für die downvote? – Basic