hier ist die Situation:
Probleme: Soweit ich gesucht habe, gibt es keine Möglichkeit, die aktuelle Aktivität im Vordergrund abzurufen.
Zusatzinfo: Dies muss in mehreren Aktivitäten gehandhabt werden können. Es kann also in Aktivität-A oder B oder C aufgetaucht werden.
Ich bin nicht sicher, ob Sie danach suchen, aber es schien ziemlich einfach zu sein. http://iamvijayakumar.blogspot.com/2011/09/get-current-activity-and-package-name.html
ActivityManager am = (ActivityManager) this .getSystemService(ACTIVITY_SERVICE);
List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
Log.d(WebServiceHelper.TAG, "CURRENT Activity ::" + taskInfo.get(0).topActivity.getClassName()+" Package Name : "+componentInfo.getPackageName());
Hoffe das hilft.
Plan A : deine Anfrage wörtlich nehmen
Schritt 1: Lassen Sie den Thread von einem Dienst verwalten
Schritt 2: Lassen Sie den Dienst eine Nachricht senden, wenn "Even" ausgelöst wird - LocalBroadcastManager
, Square's Otto, greenrobot's EventBus usw.
Schritt 3: Jede Aktivität muss so eingerichtet sein, dass sie auf diese Nachricht wartet, wenn sie sich im Vordergrund befindet
Schritt 4: Lassen Sie die Aktivität den Dialog nach Erhalt der Nachricht anzeigen
Plan B : dasselbe visuelle Ergebnis
Schritt 1: Lassen Sie den Thread von einem Dienst verwalten
Schritt # 2: Rufen Sie den Service startActivity()
für eine Dialogaktivität auf
Schritt 3: Es gibt keinen Schritt 3
Sie können dies tun, indem Sie Activity und Application erweitern und über Methoden verfügen, die die aktuell angezeigte Activity-Referenz als Variable auf Anwendungsebene abrufen und festlegen. Versuchen Sie diesen Ansatz: Wie erhalte ich den aktuellen Kontext der Vordergrundaktivität in Android? .
genau wie @ Xian Zhang sagte, mit Facebook stetho lib arbeitet für mich
ActivityTracker.get().tryGetTopActivity()?.localClassName
Wenn Ihre Aktivität innerhalb des Pakets ui liegt, ist die Ausgabe wie folgt
ui.YourActivityName
der Name Ihres App-Pakets wird nicht berücksichtigt
Verwende Facebook's Stetho Paket ist für mich der sicherste und einfachste Weg (und keine Beschwerden von anderen Teammitgliedern, dass "es hacky ist, wir werden es nicht genehmigen!" Sache ...
So einfach wie:
ActivityTracker.get (). TryGetTopActivity ();
Sie können dies mit einem benutzerdefinierten Broadcast-Empfänger erreichen. Sie können einen Broadcast-Empfänger in Ihrem Thread definieren und den Empfänger in verschiedene Aktivitäten schreiben. Und aus Ihrem Thread können Sie entscheiden, welche Aktivität gesendet werden soll.
Im Empfänger können Sie den Dialog anzeigen.