【问题标题】:How to convert URI to real path in marshmallow?如何将 URI 转换为棉花糖中的真实路径?
【发布时间】:2016-06-25 17:40:00
【问题描述】:

我有一个图像 URI,我想将此 URI 转换为真实路径。我看过很多答案,但没有一个对我有用。我正在使用棉花糖 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 .
    }

    }

【问题讨论】:

    标签: java android uri


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 2023-03-17
      • 2018-09-08
      • 1970-01-01
      相关资源
      最近更新 更多