android開発 Intent.ACTION_OPEN_DOCUMENT_TREEでファイル・ピッカーから選択した外部ストレージ内ディレクトリのURIのAuthorityは、すべて "com.android.exte… (original) (raw)

2022 May 01.
2022 Apr. 30.
2022 Apr. 10.

利用android端末のバージョン 11

build.gradle(:app)

compileSdk 32

defaultConfig {
    minSdk 24
    targetSdk 32
}

手元のAndroid端末で、Intent.ACTION_OPEN_DOCUMENT_TREEでファイル・ピッカーを開き、選択した外部ストレージ内ディレクトリのURIのAuthorityを調べると、すべて "com.android.externalstorage.documents" となっている。

URI全体は、"content://com.android.externalstorage.documents/tree/STORAGEDIR%3AFIRSTDIR%2FSECONDDIR%2FTHIRDDIR"(%3Aはコロン、%2Fはスラッシュのエンコード文字)となっている。
URI全体は、次のように文字列を置き換えると読みやすい。

myUri.toString().replace(Regex("^.*tree/"),"/").replace("%3A","/").replace("%2F","/")

Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).apply { addFlags( Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION or Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION or Intent.FLAG_GRANT_PREFIX_URI_PERMISSION ) }