Reputation: 415
here is the situation:
Problems: As far as I've searched there is no way to retrieve the current activity in the foreground.
Extra info: This needs to be able to be handled in multiple activities. So, it can be popped-up in Activity-A or B or C.
Upvotes: 11
Views: 52620
Reputation: 133
just like @Xian Zhang said, using Facebook stetho lib is working for me
ActivityTracker.get().tryGetTopActivity()?.localClassName
If your activity is within the package ui , the output be like
ui.YourActivityName
your app package name will not be included
Upvotes: 0
Reputation: 11
Use Face book's stetho package is safest and simplest way for me (and no complaints from other team members that "it's hacky we won't approve!" thing...
Just as simple as:
ActivityTracker.get().tryGetTopActivity();
Upvotes: 0
Reputation: 2032
I'm not sure if this is what you're looking for, but it seemed pretty straightforward. 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());
Hope this helps.
Upvotes: 16
Reputation: 2630
You may do that by extending Activity and Application and having methods that get and set the current viewed Activity reference as an Application level variable. Try this approach: How to get current foreground activity context in android?.
Upvotes: 0
Reputation: 8488
You can achieve this using a custom broadcast receiver. You can define a broadcast receiver in your thread and write the receiver in different activities. And from your thread you can decide which activity to send broadcast.
In the receiver, you can show the dialog.
Upvotes: 0
Reputation: 1007494
Plan A: taking your request literally
Step #1: Have the thread be managed by a service
Step #2: have the service send a message when the "even is triggered" -- LocalBroadcastManager
, Square's Otto, greenrobot's EventBus, etc.
Step #3: Have each activity be set up to listen for that message when it is in the foreground
Step #4: Have the activity display the dialog upon receipt of the message
Plan B: same visual result
Step #1: Have the thread be managed by a service
Step #2: Have the service call startActivity()
on a dialog-themed activity
Step #3: There is no step #3
Upvotes: 6