如何从onActivityResult获取任何文件路径,名称,扩展?

问题描述:

我的代码是:如何从onActivityResult获取任何文件路径,名称,扩展?

1.

File file = new File(Environment.getExternalStorageDirectory(),"myFolder"); 

      Log.d("path", file.toString()); 

     Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
     intent.setDataAndType(Uri.fromFile(file), "*/*"); 
     startActivityForResult(intent,0); 

2.

@Override 
    protected void onActivityResult(int requestCode, 
    int resultCode, Intent FileReturnedIntent) { 
      // TODO Auto-generated method stub 
      super.onActivityResult(requestCode, resultCode, FileReturnedIntent); 

如何获得文件路径名,扩展名? (假设文件在DOC,PDF,CSV格式)

+0

获取文件名有你有任何答案 – 2017-08-01 10:29:26

您可以使用

intent.putExtra("path", your_path); 

把字符串附加到意图,并把它在onActivityResult通过

FileReturnedIntent.getStringExtra("path"); 
+0

如何,他要插入的路径进入意向,如果他是从ACTION_GET_CONTENT接收意图请求? – LeoFarage 2015-09-28 03:09:23

一旦尝试,如果在如下FileReturnedIntent包含文件作为额外

Bundle data1=FileReturnedIntent.getExtras(); 
File f=(File)data1.get(key); 
String path=f.getAbsolutePath(); 
System.out.println("The file path along with extension is : "+path); 

希望这会帮助你。

你可以使用这样

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 

      if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) 
      { 
       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 picturePath = cursor.getString(columnIndex); 
       cursor.close(); 
      } 
} 
+0

不,我不想要图像我想要其他文件,如PDF,DOC如果我想要pdf或doc文件,请帮助“MediaStore.Images.Media.DATA”是什么。 – 2015-03-03 05:20:52

我迟到了,但它可以帮助别人这里是解决方案。

   Uri uri = data.getData(); 
       ContentResolver cr = this.getContentResolver(); 
       String mime = cr.getType(uri); 

它返回文件扩展如PDF,DOC等..

public static String getMimeType(Context context, Uri uri) { 
    String extension; 

    if (uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) { 
     final MimeTypeMap mime = MimeTypeMap.getSingleton(); 
     extension = mime.getExtensionFromMimeType(context.getContentResolver().getType(uri)); 
    } else { 
     extension = MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uri.getPath())).toString()); 

    } 

    return extension; 
} 

它返回你,你得到的文件名的真实路径。一位朋友使用这种方式,它非常有用。

Get filename and path from URI from mediastore

public String getRealPathFromURI(Context context, Uri contentUri) { 
    Cursor cursor = null; 
    try { 
    String[] proj = { MediaStore.Images.Media.DATA }; 
    cursor = context.getContentResolver().query(contentUri, proj, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
    } finally { 
    if (cursor != null) { 
     cursor.close(); 
    } 
    } 
} 

你从这个

public String getFileName(Uri uri) { 
    String result = null; 
    if (uri.getScheme().equals("content")) { 
    Cursor cursor = getContentResolver().query(uri, null, null, null, null); 
    try { 
     if (cursor != null && cursor.moveToFirst()) { 
     result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); 
     } 
    } finally { 
     cursor.close(); 
    } 
    } 
    if (result == null) { 
    result = uri.getPath(); 
    int cut = result.lastIndexOf('/'); 
    if (cut != -1) { 
     result = result.substring(cut + 1); 
    } 
    } 
    return result; 
}