如何将URI转换为棉花糖中的真实路径?

时间:2016-06-25 17:40:00

标签: java android uri

我有一个图片URI,我想将此URI转换为真实路径。我看了很多答案,但没有一个对我有用。我使用的是marshmallow 6.0.1。图片URI为content://com.android.providers.media.documents/document/image%3A52530

代码:

   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 .
    }

    }

1 个答案:

答案 0 :(得分:2)

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

  • 存储在可移动存储上,您无法访问
  • 存储在另一个应用的内部存储中,您无法访问
  • 以加密形式存储,其中ContentProvider需要解密
  • 存储在SQLite数据库的BLOB列中,其中ContentProvider需要加载并提供它
  • 存储在"云"中,ContentProvider需要下载
  • 即时生成,此网页的方式为

您可以使用ContentResolveropenInputStream()获取InputStream所代表内容的Uri。您可以在您控制的某个文件上创建FileOutputStream。并且,您可以使用Java I / O从InputStream复制到OutputStream,在您控制的文件中创建自己的内容副本。