Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在marshmallow中将URI转换为实际路径?_Java_Android_Uri - Fatal编程技术网

Java 如何在marshmallow中将URI转换为实际路径?

Java 如何在marshmallow中将URI转换为实际路径?,java,android,uri,Java,Android,Uri,我有一个图像URI,我想把这个URI转换成一个真实的路径。我看过很多答案,但没有一个对我有用。我用的是棉花糖6.0.1。图像URI是content://com.android.providers.media.documents/document/image%3A52530 代码: Uri不是文件。Uri不必表示您可以访问的文件系统上的文件。Uri可能指向以下内容: 存储在可移动存储上,您无法访问 存储在另一个应用程序的内部存储器中,您无法访问该应用程序 以加密形式存储,其中ContentPro

我有一个图像URI,我想把这个URI转换成一个真实的路径。我看过很多答案,但没有一个对我有用。我用的是棉花糖6.0.1。图像URI是
content://com.android.providers.media.documents/document/image%3A52530

代码:


Uri
不是
文件
Uri
不必表示您可以访问的文件系统上的文件。
Uri
可能指向以下内容:

  • 存储在可移动存储上,您无法访问
  • 存储在另一个应用程序的内部存储器中,您无法访问该应用程序
  • 以加密形式存储,其中
    ContentProvider
    需要对其进行解密
  • 存储在SQLite数据库的BLOB列中,其中
    ContentProvider
    需要加载并提供服务
  • 存储在“云”中,
    ContentProvider
    需要下载它
  • 动态生成,与此网页的方式相同
  • 等等

您可以使用
ContentResolver
openInputStream()
Uri
表示的内容上获取
InputStream
。您可以在控制的某个文件上创建
FileOutputStream
。而且,您可以使用Java I/O将
输入流
复制到
输出流
,在您控制的文件中创建自己的内容副本。

a
Uri
不是
文件
Uri
不必表示您可以访问的文件系统上的文件。
Uri
可能指向以下内容:

  • 存储在可移动存储上,您无法访问
  • 存储在另一个应用程序的内部存储器中,您无法访问该应用程序
  • 以加密形式存储,其中
    ContentProvider
    需要对其进行解密
  • 存储在SQLite数据库的BLOB列中,其中
    ContentProvider
    需要加载并提供服务
  • 存储在“云”中,
    ContentProvider
    需要下载它
  • 动态生成,与此网页的方式相同
  • 等等
您可以使用
ContentResolver
openInputStream()
Uri
表示的内容上获取
InputStream
。您可以在控制的某个文件上创建
FileOutputStream
。而且,您可以使用Java I/O从
InputStream
复制到
OutputStream
,在您控制的文件中创建自己的内容副本

   sendImageFromFolder.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                     Intent intent = new Intent();
                    intent.setType("image/*");
                    intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
                    intent.setAction(Intent.ACTION_GET_CONTENT);
                    startActivityForResult(Intent.createChooser(intent,"Select Picture"), 1);

                }
            });

     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);

     if(requestCode==1) {
          Uri uri = data.getData();//how to convert this uri to real path .
    }

    }