android12の「メディア管理の権限」取得について funash funash 総合スコア 0

437 views
Skip to first unread message

K Funa

unread,
Nov 6, 2022, 9:04:02 AM11/6/22
to 日本Androidの会
現在、以前開発したandroidアプリのバージョンアップを行っています。

その中で、メディア管理の権限についてうまく動作しないため、質問させていただきます。

開発中のアプリは音楽ファイルに変更を加えるものです。
そのため、MediaStoreAPIを使用して、メディアファイルに関する権限を取得し、編集することを考えています。
android11をターゲットにした際には、CREATE_WRITE_REQUESTを呼び出すことでメディアファイルを編集することができました。
しかし、android12から搭載された「メディア管理の権限」を取得した場合、
java.io.FileNotFoundException: /storage/emulated/0/Music/filename.mp3: open failed: EACCES (Permission denied)
というエラーが発生し、編集することができません。

android11でCREATE_WRITE_REQUESTによる編集ができた状況から、android12の「メディア管理の権限」がうまく設定できていないことが原因のように思っています。

どなたか、原因がわかる方、アドバイスいただければ幸いです。

よろしくお願いします。


(「メディア管理の権限」の呼び出し)
if (!MediaStore.canManageMedia(getApplicationContext())) {
    startActivityForResult(new Intent(Settings.ACTION_REQUEST_MANAGE_MEDIA).setData(Uri.parse("package:" + getPackageName())), ACTION_REQUEST_MANAGE_MEDIA_IN_LIST);
}

(実際に書き込みを行う処理)
path = "ファイルのuriを記載";
FileOutputStream fos = new FileOutputStream(path);←この時点でエラーが発生

Reply all
Reply to author
Forward
0 new messages