Google マップ サービスが自動的に開始される仕組みを知りたいです。
メイン バッファーまたはイベント バッファーの logcat をダンプすると、Google マップのどのコンポーネントが開始されたかしかわかりませんが、「誰が」 (パッケージ)、「どのように」 (意図) を開始したかについての手がかりはありませんか?
それらを見つけるために使用できるデバッグ方法はありますか?
Google マップ サービスが自動的に開始される仕組みを知りたいです。
メイン バッファーまたはイベント バッファーの logcat をダンプすると、Google マップのどのコンポーネントが開始されたかしかわかりませんが、「誰が」 (パッケージ)、「どのように」 (意図) を開始したかについての手がかりはありませんか?
それらを見つけるために使用できるデバッグ方法はありますか?
「どのように」を見つけることはできましたが、「誰が」についての手がかりはまだ見つかりません。
Run 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
ActivityManagerをハックとして使用して取得できます。何かのようなもの:
ActivityManager aManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RecentTaskInfo> recentTaskList = aManager.getRecentTasks(1, 0);
Intent caller = recentTaskList.get(0).baseIntent;
ここでは検証をスキップしていますが、これで開始できます。
GET_TASKS
許可を忘れないでください。
これがあなたの問題の解決策であることを願っています
String uri = "geo:" + 0 + "," + 0 + "?q=" + address;
Intent intent = new Intent(Intent.ACTION_VIEW, Uri
.parse(uri));
startActivity(intent);