web-dev-qa-db-ja.com

プログラムによるアプリケーション通知設定へのアクセス

Androidアプリには、アプリ通知設定を開く機能を追加したいボタンがあります(Android設定内))。

Screenshot of Android's notification settings for the Camera application

これでAndroid設定を開くことができます

startActivityForResult(new Intent(Android.provider.Settings.ACTION_SETTINGS), 0);

アプリの通知設定で直接開きたい

代替

プログラムで「ブロック通知」をオンまたはオフにする方法があれば、それも問題ありません。

10
Ric

アプリケーションの通知設定に直接ディープリンクできるパブリックAPIはありません。

Settings.ACTION_APPLICATION_DETAILS_SETTINGS アプリケーションの設定へのディープリンクを設定しますが、通知画面に直接移動しません。

Androidアプリの通知設定? にリンクする方法はありますが、機能する可能性のある解決策がありますが、公式APIの一部ではないため、すべてのデバイスまたはAndroidの将来のバージョンで動作することが保証されています。

「ブロック通知」をプログラムでオン/オフする方法がある場合も問題ありません

絶対違う。プログラムによる通知のオン/オフをアプリケーションに許可すると、通知のオン/オフをユーザーが制御できるようになります。

10
Bryan Herbst

私はこれが古い質問であることを知っていますが、将来的にそれを見つける人のために:Oreo(APIレベル26)以降、特定のアプリの通知設定用の公式ディープリンクIntentがあります。

Intent settingsIntent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        .putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName())
        .putExtra(Settings.EXTRA_CHANNEL_ID, MY_CHANNEL_ID);
startActivity(settingsIntent);

EXTRA_CHANNEL_IDパラメータはオプションであり、 the docs に従って「そのチャネルを強調表示」します。 FWIW、Android 8.1以降、違いが見られません。このパラメーターを追加する場合は、ActionACTION_CHANNEL_NOTIFICATION_SETTINGSであることを確認してください。

15
String
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
0
Makvin