【问题标题】:How to get any File Path ,Name ,Extension from onActivityResult?如何从 onActivityResult 获取任何文件路径、名称、扩展名?
【发布时间】:2015-05-03 15:49:35
【问题描述】:

我的代码是:

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格式)

【问题讨论】:

  • 你有答案吗

标签: android onactivityresult


【解决方案1】:

Kotlin 的新星日:

val myFile = File(data?.data!!.path)

【讨论】:

    【解决方案2】:

    它返回文件扩展名,如 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;
    }
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        你可以这样使用

        @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();
                   }
        }
        

        【讨论】:

        • 不,我不想要图像,我想要其他文件,如 pdf,如果我想要 pdf 或 doc 文件,将用什么代替“MediaStore.Images.Media.DATA”,请帮忙。跨度>
        【解决方案5】:

        如果 FileReturnedIntent 包含 File as extras,请尝试如下操作

        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);
        

        希望对你有帮助。

        【讨论】:

          【解决方案6】:

          你可以使用 String Extra 来表达意图

          intent.putExtra("path", your_path);
          

          并通过

          将其放入 onActivityResult
          FileReturnedIntent.getStringExtra("path");
          

          【讨论】:

          • 如果他从 ACTION_GET_CONTENT 请求中接收到意图,他将如何将路径插入到 Intent 中?
          • 这个答案没有帮助
          猜你喜欢
          • 2020-08-12
          • 2022-06-23
          • 2016-02-02
          • 1970-01-01
          • 1970-01-01
          • 2012-10-11
          • 2010-10-15
          • 1970-01-01
          • 2010-09-27
          相关资源
          最近更新 更多