如何接收和保存从另一个应用程序共享的图像

时间:2016-06-16 11:45:23

标签: android uri filepath sharing

if(intent.getType().startsWith("image/")){
    Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
    imageView.setImageUri(imageUri);
}

需要将此图像保存在我的应用程序数据目录中。查询内容解析程序仅返回已保存在设备中的图像文件的路径。等,

private String getPathFromURI(Uri contentURI) {
        String result = null;
        Cursor cursor = null;
        try {
            cursor = getContentResolver().query(contentURI, null, null, null, null);
            cursor.moveToFirst();
            int idx = cursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.DATA);
            result = cursor.getString(idx);
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
        return result;
    }

但这并不是所有时间都有效,因为其中一些图像文件位于应用程序的私有目录中。 如何获取对这些文件的读取权限,以便可以为我的应用程序写入/保存共享文件的副本? 有什么不对的,我应该采取其他方式吗?请帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

  

对内容解析程序进行排队仅返回已保存在设备

中的图像文件的路径

远不止于此。这仅适用于Uri中的MediaStore,即使只是在某些情况下也是如此。

  

如何获取对这些文件的读取权限,以便我可以为我的应用程序编写它们的副本?

第1步:使用getContentResolver().openInputStream()获取InputStream所代表内容的Uri

步骤2:为您想要的副本创建FileOutputStream

步骤3:使用标准Java文件I / O将字节从InputStream复制到FileOutputStream

IOW,这与使用HttpURLConnection从网址下载文件没有什么明显不同。