如何找出服务(不在我的应用程序中)的启动意图?

时间:2013-02-24 17:20:21

标签: android debugging android-intent

我想了解Google地图服务是如何自动启动的。

当我转储主缓冲区或事件缓冲区的logcat时,我只能找出谷歌地图的哪个组件已启动,但没有关于“谁”(包)启动它的线索,以及“如何”(意图)?

是否有可用于查找它们的调试方法?

3 个答案:

答案 0 :(得分:2)

我设法找到“如何”,但仍然没有找到关于“谁”的线索。

“如何”

运行dumpsys activity services,请参阅intent字段:

* ServiceRecord{41526f40 u0 com.google.android.apps.maps/com.google.android.location.internal.server.GoogleLocationService}

  intent={act=com.google.android.location.internal.GMM_NLP}

  packageName=com.google.android.apps.maps

答案 1 :(得分:0)

我希望这是解决问题的方法

String uri = "geo:" + 0 + "," + 0 + "?q=" + address;
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri
                            .parse(uri));
                    startActivity(intent);

答案 2 :(得分:0)

您可以使用ActivityManager作为黑客来获取它。类似的东西:

ActivityManager aManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RecentTaskInfo> recentTaskList = aManager.getRecentTasks(1, 0);
Intent caller = recentTaskList.get(0).baseIntent;

我在这里跳过验证,但这应该让你开始。

不要忘记GET_TASKS权限。