[ Android ] 外部アプリの起動(Intent)

自作アプリから、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);