Blog スタッフブログ

Android システム開発

[Android][Kotlin]動画ファイルを選択しファイル名とファイルサイズの取得

システム開発担当のTFです。

※Android10対応(他バージョンの場合、細かい部分等が異なる事があります)

やり方

  • intentで動画のピッカーを立ち上げる
  • registerForActivityResultで受け取る
  • 受け取った結果からintentを取得し、ファイル情報を取得する

参考

  Androidで 静止画と動画のピッカーで選択したコンテンツのファイルパスを取得する
  一般的なインテント
  アクティビティの結果を取得する
  ファイル情報の取得

サンプル

// intentで動画のピッカー立ち上げ
val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.setType("video/*");
// 下記で設定したregisterForActivityResultで起動する
activityResult.launch(intent)
// 結果の受け取り
val activityResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
    if (result.resultCode == RESULT_OK) {
        // intent 取得
        val intent = result.data
        // intentからファイル情報の取得
        intent?.data?.let { returnUri ->
            contentResolver.query(returnUri, null, null, null, null)
        }?.use { cursor ->
            // indexの取得
            val nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)
            val sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE)
            cursor.moveToFirst()
            
            // ファイル名の取得
            Log.v("FileName", cursor.getString(nameIndex))
            // ファイルサイズの取得
            Log.v("FileSize", cursor.getLong(sizeIndex).toString())
        }
    }
}