Home » Android » java – Android – Dynamically Get the Current Activity in Foreground

java – Android – Dynamically Get the Current Activity in Foreground

Posted by: admin June 15, 2020 Leave a comment

Questions:

here is the situation:

  1. In a Thread an event is triggered.
  2. The current activity needs to be retrieved.
  3. Then a Dialog Box is created on that activity and shown.

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.

How to&Answers:

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.

Answer:

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

Answer:

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.

Answer:

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?.

Answer:

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();

Answer:

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