我想了解Google地图服务是如何自动启动的。
当我转储主缓冲区或事件缓冲区的logcat时,我只能找出谷歌地图的哪个组件已启动,但没有关于“谁”(包)启动它的线索,以及“如何”(意图)?
是否有可用于查找它们的调试方法?
答案 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
权限。