我把图像存储在应用程序的内部存储器中。我可以抓取路径,并成功地将其设置为图像视图。但是当我试图让用户使用图库(意图)打开它时,它会显示黑色的屏幕。
myIntent.setDataAndType(Uri.fromFile(file), mimetype);
intent = Intent.createChooser(myIntent, "Choose a viewer");
startActivity(intent);我很确定这与许可有关,因为出于某种原因,画廊无法访问我的应用程序的私有存储空间。但是,除了将文件移动到外部存储之外,还有其他方法吗?
谢谢
发布于 2015-07-18 13:31:05
FileProvider提供来自内部存储器的文件。引用文件:
file:///是ContentProvider的一个特殊子类,它通过为一个文件创建一个内容:// Uri而不是一个FileProvider Uri来促进与应用程序关联的文件的安全共享。 内容URI允许您使用临时访问权限授予读和写访问权限。当创建包含内容URI的意图时,为了将内容URI发送到客户端应用程序,还可以调用Intent.setFlags()来添加权限。只要接收活动的堆栈处于活动状态,客户端应用程序就可以使用这些权限。
发布于 2015-07-18 07:09:02
这里有一个简单的“基于单一文件的解决方案”
添加文件时,让Media内容提供商知道使用
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.fromFile(imageAdded)));发布于 2015-07-18 07:10:43
我做了一些这样的事情来展示画廊的图片。
private void pickFromGallery() {
Crop.pickImage(this);
} <-->作物是一个android类。
这是作物类中的一个函数。
public static void pickImage(Activity activity) {
Intent intent = (new Intent("android.intent.action.GET_CONTENT")).setType("image/*");
try {
activity.startActivityForResult(intent, 9162);
} catch (ActivityNotFoundException var3) {
Toast.makeText(activity, string.crop__pick_error, 0).show();
}
}https://stackoverflow.com/questions/31488639
复制相似问题