rokkonet

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

android開発 Intentで起動するアプリを指定する

2022 Dec. 04.
2022 Jan. 30.
2021 Sep. 12.

Intent#setPackageでアプリを指定する

音声uriVLCメディアプレーヤーを指定するインテント
// 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) {
        // 例外処理
    }
}