1. ホーム
  2. android

[解決済み] WRITE_SETTINGSのパーミッションが取得できない

2023-05-08 09:46:33

質問

Android M Preview 3 でターゲット API が 23 の場合、Manifest.permission.WRITE_SETTTINGS のパーミッションが取得できないようです。

requestPermissions(new String[]{Manifest.permission.WRITE_SETTINGS}, 101);

リクエストパーミッションでは期待するようなダイアログは出てきませんが、このパーミッションなしで次のような呼び出しをすると。

 RingtoneManager.setActualDefaultRingtoneUri(activity, RingtoneManager.TYPE_RINGTONE, ringUri);

権限がないため、呼び出しは除外されます。

ここから先がよくわかりません。23 の新しい着信音 API があるのでしょうか。それとも、この権限変更によって、システム以外のアプリが着信音を変更できなくなっただけでしょうか?

どのように解決するのですか?

使用方法 WRITE_SETTINGS は、docsに基づいています。

  1. を持つ。 <uses-permission> 要素を通常通りマニフェストで使用します。

  2. コール Settings.System.canWrite() までご連絡ください。

  3. もし canWrite() が返す false 起動 ACTION_MANAGE_WRITE_SETTINGS 活動 で、アプリが実際に設定に書き込むことを許可するよう、ユーザーが同意できるようにします。

言い換えれば、設定への書き込みは、デバイス管理 API やアクセシビリティ サービスなどと同様に、ダブルオプトイン (インストールに同意し、許可するために設定で別途同意する) となりました。

また、私はまだこれらを使ってみていないことに注意してください - これは 昨日行った Android 6.0 の変更点に関する研究です。 .