我将图像存储在应用程序的内部存储中。我可以抓住路径,我可以成功地将其设置为图像视图。但是当我试图让用户使用图库(意图)打开它时,它会显示黑屏。
myIntent.setDataAndType(Uri.fromFile(file), mimetype);
intent = Intent.createChooser(myIntent, "Choose a viewer");
startActivity(intent);
我很确定它与版权所有权有关,因为某些原因,图库无法访问我的应用的私有存储空间。但是,除了将文件移动到外部存储之外,还有办法吗?
由于
答案 0 :(得分:1)
这是一个简单的基于单一文件的解决方案'
如果您添加文件,请让Media Store Content Provider使用
了解它sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.fromFile(imageAdded)));
答案 1 :(得分:1)
Use FileProvider
从internal storage投放文件。引用文档:
FileProvider是ContentProvider的一个特殊子类,它通过创建内容来促进与应用程序关联的文件的安全共享:// Uri用于文件而不是文件:/// Uri。
内容URI允许您使用临时访问权限授予读写访问权限。当您创建包含内容URI的Intent时,为了将内容URI发送到客户端应用程序,您还可以调用Intent.setFlags()来添加权限。只要接收活动的堆栈处于活动状态,客户端应用程序就可以使用这些权限。
答案 2 :(得分:0)
我做过这样的事情来展示画廊的图片。
private void pickFromGallery() {
Crop.pickImage(this);
}
< ---> crop是一个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();
}
}