前提
アプリ内からSMBクライアント機能を有する(自分でインストールした)ファイラーを呼び出して、指定したSMBサーバー内のディレクトリを取得しようとしています。
端末内のディレクトリは、次のように、Intent.ACTION_OPEN_DOCUMENT_TREEをActivityResultContractsに与えれば、android組み込みのファイラーが起動して、ユーザーがディレクトリを選択できます。
val myLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {...} val myIntent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) myLauncher.launch(myIntent)
しかし、自分が端末にインストールしたファイラーを起動してディレクトリを選択することができません。
端末にインストールしているX-ploreというファイラーを指定するために
val myIntent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) myIntent.setPackage("com.lonelycatgames.Xplore")
とすると、
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.OPEN_DOCUMENT_TREE pkg=com.lonelycatgames.Xplore }
というエラーとなります。
("com.lonelycatgames.Xplore"は、端末の Android/data/内のディレクトリ名から取ってきました)
実現したいこと
アプリから自分が端末にインストールしたファイラーを起動してディレクトリを選択できるようにしたい。
補足情報(FW/ツールのバージョンなど)
android
端末バージョン 11
compileSdk 33
minSdk 30
targetSdk 33
0 コメント