私のアプリでは、リンガーモードがサイレントモードに設定されていますが、Android Nの場合はjava.lang.SecurityException: Not allowed to change Do Not Disturb state
になります。Android N:チェックボックスの設定を更新する前にDND状態を確認しました
私はこのpostの手順に従いました。次のコードは、呼び出し音モードを変更する権限を有効にするためのトグルボタンを含むアクティビティを開きます。このアクティビティは、許可を有効にせずに「バックアップ」することができます。
Intent intent = new Intent(
android.provider.Settings
.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
startActivity(intent);
問題は、サイレント着信音機能を使用する前に許可が与えられていることを確認したいということです。
この着信音モードの切り替えを有効または無効にするCheckBoxPreferenceを追加しています。チェックボックスをオンにすると、リンガーモードをサイレントに設定し、そうでない場合はリンガーモードを変更しません。
は、今まで私は、ユーザーがチェックボックスをクリックしたときに、この許可要求を開始するために管理:
disableSoundCheckboxPreference.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
...
// check for Android N and start the activity mentioned above
しかし、権限が付与された場合にのみ、このチェックボックスを有効にする正しい方法は何ですか?私はACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED
とリスナーと関係があるはずですが、これを実装するにはいくつかのアイデアが必要です。
ありがとうございます!