java - 如何从 Intent.ACTION_GET_CONTENT 获取完整路径?

标签 java android

我正在尝试将文件选择器 Intent 中的选定文件(不限于图像,它可以是任何文件)放入一个 zip 文件。我需要完整的文件路径才能执行此操作,但 Intent 仅提供 uri 路径。

  1. 我试过 .getPath() 但它没有给出文件的真实路径
  2. 我试过 getRealPathFromRealURI: android get real path by Uri.getPath()
  3. 我试过 File file = new File(), file.getPath()

这是我的代码:

    public void onActivityResult(int requestCode, int resultCode, Intent result){
        if(requestCode == 111) {
            if(null != result) { // checking empty selection
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                    if(null != result.getClipData()) { // checking multiple selection or not
                        for(int i = 0; i < result.getClipData().getItemCount(); i++) {
                            String uri = result.getClipData().getItemAt(i).getUri().getPath();
                            uriList.add(uri);
                            Log.d("PATH: ",uri);
                        }
                        confirmationDialog();
                    } else {
                        String uri = result.getData().getPath();
                        uriList.add(uri);
                        Log.d("PATH: ",uri);
                        confirmationDialog();
                    }
                }else{Toast.makeText(getApplicationContext(),
                        "An error has occured: API level requirements not met",Toast.LENGTH_SHORT).show();};
            }
        }
    }

它应该给出真实的路径,例如:“/sdcard/filename.example”

相反,它给了我:“/document/9016-4ef8:filename.example”

最佳答案

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();
System.out.println("picturePath +"+ picturePath );  //path of sdcard

在这里找到:Get Real Path For Uri Android

关于java - 如何从 Intent.ACTION_GET_CONTENT 获取完整路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56390987/

相关文章:

java - 安卓 Java : Buttons and TextViews not showing up when added via Java (to existing XML layout)

java - 如何使用 APACHE POI 在 Word 中对表格进行 colspan

java - 在 GAE 中创建 Google Cloud Endpoint 时出现项目错误 (Eclipse)

android - 如何在android中自动静音和恢复铃声?

android - 如何动态地将 View 添加到 ViewGroup 并与其子项之一垂直对齐

android - 在库中添加 Gradle 构建文件夹

java - Java 复杂表达式

java - 想象一个真实的并发场景,应该使用StringBuffer而不是StringBuilder?

java - 当从不同主题中具有相同键的主题加载 GlobalKTable 时会发生什么?

MacBook 上的安卓开发