自作アプリから、Androidの機能を呼び出したい
・Android 7.1
1.外部アプリの起動
YouTubeを起動すると、起動ログ(Logcat)を取得したらこんなのが出る
I/ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.google.android.youtube/.app.honeycomb.Shell$HomeActivity (has extras)} from uid 10024 on display 0
少し見やすくすると。
{ act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.google.android.youtube/.app.honeycomb.Shell$HomeActivity (has extras) }
Intentにて書いてみると。
Intent intent = new Intent(Intent.ACTION_MAIN); intent.setAction("android.intent.category.LAUNCHER"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // デフォルトなので無くてもNEW_TASKになる intent.setClassName("com.google.android.youtube", "com.google.android.youtube.app.honeycomb.Shell$HomeActivity"); startActivity(intent);
※ intent.setFlagsに、0x10200000 にすると「android.content.ActivityNotFoundException:Unable to find explicit activity class」が出るので、「Intent.FLAG_ACTIVITY_NEW_TASK」にする。
※ XMLにActivityの追記すれば解決するかもだけど、起動するだけなので。
2.標準機能?を呼び出し
Intentの引数いれるだけで起動できる、デバイス情報画面ならこんな感じ
Intent intent = new Intent(Settings.ACTION_DEVICE_INFO_SETTINGS); startActivity(intent);
ACTION_DEVICE_INFO_SETTINGSのアクションを変えれば設定関係の画面が呼び出せる
ちなみに時計のアラーム関連は、AlarmClockのアクションになる。
Intent intent = new Intent(AlarmClock.ACTION_SHOW_ALARMS);