图库无法显示内部存储空间中的图像

时间:2015-07-18 06:51:15

标签: android

我将图像存储在应用程序的内部存储中。我可以抓住路径,我可以成功地将其设置为图像视图。但是当我试图让用户使用图库(意图)打开它时,它会显示黑屏。

myIntent.setDataAndType(Uri.fromFile(file), mimetype);
intent = Intent.createChooser(myIntent, "Choose a viewer");
startActivity(intent);

我很确定它与版权所有权有关,因为某些原因,图库无法访问我的应用的私有存储空间。但是,除了将文件移动到外部存储之外,还有办法吗?

由于

3 个答案:

答案 0 :(得分:1)

这是一个简单的基于单一文件的解决方案'

如果您添加文件,请让Media Store Content Provider使用

了解它
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,  
                                       Uri.fromFile(imageAdded)));

答案 1 :(得分:1)

Use FileProviderinternal 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();
    }

}