Androidではシステム設定にあるアプリの通知設定画面にアプリの設定画面を起動するリンクを設置することができます。
「アプリ内のその他の設定」というのがそれになります。
残念ながら「アプリ内のその他の設定」というテキストを変更することはできません。
設定なしの場合 | 設定ありの場合 |
---|---|
![]() |
![]() |
また、通知チャンネルごとの設定画面にも同様のリンクを表示させることができます。
設定なしの場合 | 設定ありの場合 |
---|---|
![]() |
![]() |
設定画面にリンクを設定する方法
アプリ内のActivityにandroid.intent.category.NOTIFICATION_PREFERENCES
というカテゴリーのintent-filterを設定すると、システム設定からアプリが起動できる画面を持っていると認識されるようになり、リンクが表示されます。
<activity
android:name=".SettingActivity"
android:exported="true"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.NOTIFICATION_PREFERENCES" />
</intent-filter>
</activity>
このカテゴリーの値はNotification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES
で定義されています。
チャンネル設定内から起動した場合は、android.intent.extra.CHANNEL_ID
というKeyでチャンネルIDが、また、NotificationChannelGroupを設定している場合は、android.intent.extra.CHANNEL_GROUP_ID
というKeyでチャンネルグループIDがExtraに格納されています、通知設定のルートからの場合はExtraは設定されていません。
これらもNotification.EXTRA_CHANNEL_ID
、Notification.EXTRA_CHANNEL_GROUP_ID
で値が定義されています。
Intentを受けて何らかの処理を行う場合は、以下のように実装することになると思います。
if (intent.hasCategory(Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES)) {
val channelId = intent.getStringExtra(Notification.EXTRA_CHANNEL_ID)
val groupId = intent.getStringExtra(Notification.EXTRA_CHANNEL_GROUP_ID)
...
}
似たような定義値で、アプリからシステム設定を開くときにチャンネルIDを指定するSettings.EXTRA_CHANNEL_ID
はandroid.provider.extra.CHANNEL_ID
という値になっていて、違う値なのでご注意ください。
以上です。