2016-04-19 58 views
1

私は、ユーザーが選択したファイルのパスを取得しようとしていますが、結果としてACTION_GET_CONTENTを呼び出しています。Androidの意図ACTION_GET_CONTENTはファイルの拡張子を返しません

問題は、ファイルマネージャからオーディオファイルを選択したときに、インテントがファイルの拡張子(ファイル名にチェックインしています)を返さない場合です。ビデオや画像の場合は正常に動作しています。

テント呼び出し:

if (data != null) { 
    //Get URI Data from Intent - URI is of the file chosen by the User in the 
    //File picker 
    uriFileURI = data.getData(); 
    if(uriFileURI != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
    final int intFlags = data.getFlags()&(Intent.FLAG_GRANT_READ_URI_PERMISSION|Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 
getContentResolver().takePersistableUriPermission(data.getData(), intFlags); 
} 
    //Check if URI was returned or not; NULL is returned if file was chosen from 
    //via gallery share option 
    //In such a case, the URI is retrieved from ClipData object of the Intent 
    if (uriFileURI == null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && data.getClipData().getItemCount() > 0) 
     uriFileURI = data.getClipData().getItemAt(0).getUri(); 
    //Log File URI 
    Log.i("CloudMedia", "File Uri: " + String.valueOf(uriFileURI)); 
    //Generate Absolute File name to publish on Title 
    strFileName = getFileInformation(uriFileURI, MediaStore.Files.FileColumns.DISPLAY_NAME); 

getFileInformation機能:

public String getFileInformation(Uri strFileURI, String strProjection) { 
     Cursor cursorFileId = getContentResolver().query(strFileURI, 
       new String[] { 
         strProjection 
       }, null, null, null); 
     if(cursorFileId.moveToFirst()) { 
      return cursorFileId.getString(cursorFileId.getColumnIndex(strProjection)); 
     } else 
      return null; 
    } 

ので結果コードで

Intent intent = getIntent(); 
if(intent.getAction() == null) { 
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) 
     intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); 
    else 
     intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("*/*"); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 
    startActivityForResult(Intent.createChooser(intent, "Select a File to Upload"),CloudConstants.CLOUD_REQUEST_FILE_CHOOSER); 

ここ

コードですには、選択したオーディオファイルの拡張子が含まれていません。 オーディオファイルの拡張子も欲しいです。

答えて

1
  Uri selectedImage = data.getData(); 
      String[] filePathColumn = { MediaStore.Images.Media.DATA }; 
      Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); 
      cursor.moveToFirst(); 
      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      String imgFullPath = cursor.getString(columnIndex); 
      cursor.close();//String file = uri.toString(); 

ソースhttp://programmerguru.com/android-tutorial/how-to-pick-image-from-gallery/

関連する問題