rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

android開発 Intent.ACTION_OPEN_DOCUMENT_TREEでファイル・ピッカーから選択した外部ストレージ内ディレクトリのURIのAuthorityは、すべて "com.android.externalstorage.documents" となっている

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
    )
}