shibafu528/Yukari

Android 13で「システムの通知設定を開く」が機能しない

Closed this issue · 2 comments

「システムの通知設定を開く」をタップしても開かない。

デバッガで眺めた感じだと、まずClass name固定のほうはActivityNotFoundExceptionになっている。しかし、catch句のほうのIntentはstartしても例外を出さずに空振りしている。

prefNotifSystemConfig.setOnPreferenceClickListener(preference -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
try {
// EMUI 8.xなど、正攻法で呼び出すと通知音のカスタマイズが行えない
// ベンダーオリジナルのActivityが起動されることがある。
// そういうのは嫌なので、素のAndroidの設定画面を指名して呼び出す。
Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
intent.setClassName("com.android.settings", "com.android.settings.Settings$AppNotificationSettingsActivity");
intent.putExtra(Settings.EXTRA_APP_PACKAGE, getContext().getPackageName());
startActivity(intent);
} catch (ActivityNotFoundException e) {
// このブロックをわざわざ用意する意味はないかもしれない、とりあえず正攻法での呼出を書いただけ
Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
intent.putExtra(Settings.EXTRA_APP_PACKAGE, getContext().getPackageName());
startActivity(intent);
}
}
return true;
});

Env

  • Yukari Next 3.1.3.2312 (mirage 220823 8ea86af)/exvoice arm64-v8a(May 3 2022 12:44:30)/Google/Pixel 6/13
  • Yukari 2.0.12.417 (planche 190315)/exvoice arm64-v8a(Apr 1 2018 09:11:52)/Google/Pixel 6/13

Settings.EXTA_CHANNEL_ID は実は必須 (must)らしいので、それが足りないことによって動かなくなった可能性はあるかも?

https://developer.android.com/reference/android/provider/Settings#EXTRA_CHANNEL_ID

ちょうど #313 で通知チャンネルごとの設定画面を用意したので、ここからのリンクでEXTRA_CHANNEL_ID付きのIntentを出すようにしたらそれで十分かもしれない。