调用服务的活动或接收方的名称

时间:2011-09-04 18:43:51

标签: android android-service android-activity

我有一个从接收者或活动中调用的Intent服务。我想知道触发服务的接收者或活动的名称。我不想使用任何额外的或标志来传递给服务。

有没有办法在代码运行时看到活动堆栈?

2 个答案:

答案 0 :(得分:5)

据我所知,没有办法检测Intent的发件人。

答案 1 :(得分:0)

  

有没有办法在代码运行时看到活动堆栈?

您可以使用ActivityManager.RunningTaskInfo。虽然它没有提供太多API,但它可能足以满足您的要求。伪代码:

ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(10);
ActivityManager.RunningTaskInfo firstTask = runningTasks.get(0);
String topActivityName = firstTask.topActivity.getShortClassName();
String rootActivityName = firstTask.baseActivity.getShortClassName();

它使您能够检索特定任务的顶部和根活动(AKA。后台堆栈),请注意,您需要在AndroidManifest.xml中设置柿子GET_TASKS