2022 Dec. 04.
2022 Jan. 30.
2021 Sep. 12.
Intent#setPackageでアプリを指定する
音声uriとVLCメディアプレーヤーを指定するインテント例
// audioUri: Uri URI of an audio content val audioIntent = Intent() audioIntent.action = Intent.ACTION_VIEW audioIntent.setDataAndType(audioUri, "audio/*") audioIntent.setPackage("org.videolan.vlc") startActivity(audioIntent)
ContentResolverで得たURIをそのままIntentに与えても動作しない。パスを取得し、そのパスをURIにパースする必要がある。 パスは _dataカラムから取得できる。
ファイル選択にXplorerファイラーを指定したインテント例
(ファイル選択可能だがディレクトリは選択できない)
val filerIntent = Intent(Intent.ACTION_GET_CONTENT) filerIntent.setPackage("com.lonelycatgames.Xplore") filerIntent.type = "*/*" filerLauncher.launch(filerIntent) // ファイラー起動と結果受け取り val filerLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> // result は ActivityResult 型で、resultCode と data (Intent) を持つ。 if (result.resultCode == RESULT_OK) { result.data?.dataString?.let { onFileResult(it) } } } // ファイルパス取得 private fun onFileResult(dataString: String) { try { val filePath = dataString.replace("file://", "") val decodedfilePath = URLDecoder.decode(filePath, "utf-8") } catch (e: UnsupportedEncodingException) { // 例外処理 } }