rokkonet

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

android開発 ファイル・ピッカーを開いてディレクトリを選択するには Intent.ACTION_OPEN_DOCUMENT_TREE を利用する

2022 May 01.
2022 Apr. 30.
2022 Mar. 26.

参考ページ
プログラミングに関する質問とベストアンサー - CODE Q&A
android開発 Intent.ACTION_OPEN_DOCUMENT_TREEでファイル・ピッカーから選択した外部ストレージ内ディレクトリのURIのAuthorityは、すべて "com.android.externalstorage.documents" となっている - rokkonet

サンプルkotlinコード

class MainActivity : AppCompatActivity() {

    private val fileLauncher = registerForActivityResult(
        ActivityResultContracts.StartActivityForResult() )
            { result -> // 結果を受け取る関数
                if (result.resultCode == RESULT_OK) {
                    // succeeded.
                    // get uri.
                    val mUri = result.data?.data
                    val mUriString = mUri?.toString()

                } else {
                    // failed

                }
            }

    fun selectDir() {
        val intent = 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 )
        }
        fileLauncher.launch(intent)
    }
}