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;
}
但这并不是所有时间都有效,因为其中一些图像文件位于应用程序的私有目录中。 如何获取对这些文件的读取权限,以便可以为我的应用程序写入/保存共享文件的副本? 有什么不对的,我应该采取其他方式吗?请帮助,谢谢。
答案 0 :(得分:0)
对内容解析程序进行排队仅返回已保存在设备
中的图像文件的路径
远不止于此。这仅适用于Uri
中的MediaStore
,即使只是在某些情况下也是如此。
如何获取对这些文件的读取权限,以便我可以为我的应用程序编写它们的副本?
第1步:使用getContentResolver().openInputStream()
获取InputStream
所代表内容的Uri
步骤2:为您想要的副本创建FileOutputStream
步骤3:使用标准Java文件I / O将字节从InputStream
复制到FileOutputStream
IOW,这与使用HttpURLConnection
从网址下载文件没有什么明显不同。