我想知道谷歌地图服务是如何自动启动的。
当我转储主缓冲区或事件缓冲区的 logcat 时,我只能找出 Google Maps 的哪个组件启动了,但没有关于“谁”(包)启动它以及“如何”(意图)的线索?
有什么调试方法可以用来找出它们吗?
我想知道谷歌地图服务是如何自动启动的。
当我转储主缓冲区或事件缓冲区的 logcat 时,我只能找出 Google Maps 的哪个组件启动了,但没有关于“谁”(包)启动它以及“如何”(意图)的线索?
有什么调试方法可以用来找出它们吗?
我设法找到“如何”,但仍然找不到“谁”的线索。
运行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
我希望这是您的问题的解决方案
String uri = "geo:" + 0 + "," + 0 + "?q=" + address;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri
.parse(uri));
startActivity(intent);
您可以使用 ActivityManager 作为 hack 来获取它。就像是:
ActivityManager aManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RecentTaskInfo> recentTaskList = aManager.getRecentTasks(1, 0);
Intent caller = recentTaskList.get(0).baseIntent;
我在这里跳过验证,但这应该让你开始。
不要忘记GET_TASKS
许可。