8

我想知道谷歌地图服务是如何自动启动的。

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

有什么调试方法可以用来找出它们吗?

4

3 回答 3

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
于 2013-02-25T14:32:45.850 回答
0

我希望这是您的问题的解决方案

String uri = "geo:" + 0 + "," + 0 + "?q=" + address;
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri
                            .parse(uri));
                    startActivity(intent);
于 2013-03-04T14:21:01.313 回答
0

您可以使用 ActivityManager 作为 hack 来获取它。就像是:

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

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

不要忘记GET_TASKS许可。

于 2013-03-08T20:43:05.660 回答