Androidのスマートフォンに保存しているファイルをGUIで選ぶ

Windowsのファイルを開くダイアログのように、Androidスマートフォンに保存しているファイルをGUIで選ぶには、暗黙的インテントを使って対応する Activity を起動します。

startActivity() や startActivityForResult() を実行する前に resolveActivityを使って暗黙的インテントを受け取るアプリが存在するか確認することでアプリのクラッシュを防ぐことができます。

インテントの例

int ID_OPEN = 1000;


val intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
intent.setType("*/*")
intent.addCategory(Intent.CATEGORY_OPENABLE)
if (intent.resolveActivity(packageManager) != null) {
    startActivityForResult(Intent.createChooser(intent, "title"), ID_OPEN)
}

ファイルを選択するとonActivityResultが呼び出されます。

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    when (requestCode) {
        ID_OPEN -> {
            if ((resultCode == RESULT_OK) && (data != null)) {
                val uri = data.data
                if (uri != null) {
                    onSelectFile(uri)
                }
            }
        }
    }
}

より詳しい情報はこちら

一般的なインテント  |  Android Developers