前提・実現したいこと
androidアプリにてファイル選択のためにIntentを使用してファイラを呼び出し、ファイラ上でユーザにファイルを選択させ結果をファイラから戻してもらう実装を検討しています。
ユーザがファイルを選択した後にIntentで戻ってきたuriからファイル拡張子を調べたいと考えているのですが、現状uri⇒file変換できず詰まってしまっております。
何か良い解決策は無いか、アドバイスいただけないでしょうか。
発生している問題
uriをFile形式に変換できず、データ拡張子を調べることができない。
該当のソースコード
下記のようにIntentを使用してファイラを呼び出し、audioファイルを呼び出しています。
kotlin
1 val intent = Intent(Intent.ACTION_GET_CONTENT) 2 intent.addCategory(Intent.CATEGORY_OPENABLE) 3 intent.setType("audio/*") 4 startActivityForResult(intent,FileGetterRequestCode)
試したこと
下記のようにuriをFile形式に変更することも試してみましたが、nullで返ってしまい、変換ができないでいます。
kotlin
1 fun uriToFile(uri:Uri):File?{ 2 3 var file:File?=null 4 val context = this.getApplicationContext() 5 val scheme = uri.getScheme() 6 7 if ("file" == scheme) { 8 val path = uri.getPath() 9 file =File(path) 10 } 11 else if ("content" == scheme) { 12 13 val projection = arrayOf<String>(MediaStore.MediaColumns.DATA) 14 val cursor = context.getContentResolver().query(uri,projection,null,null,null) 15 16 if (cursor!= null){ 17 var path:String?=null 18 if(cursor.moveToFirst()){ 19 path = cursor.getString(0) 20 } 21 cursor.close() 22 23 if (path!= null){ 24 file = File(path) 25 } 26 } 27 28 } 29 return file 30
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/20 15:51