Android 画廊可以';t显示来自内部存储器的图像

Android 画廊可以';t显示来自内部存储器的图像,android,Android,我将图像存储在应用程序的内部存储器中。我可以抓取路径,并成功地将其设置为“图像视图”。但当我试图让用户使用gallery(意图)打开它时,它会显示黑屏 myIntent.setDataAndType(Uri.fromFile(file), mimetype); intent = Intent.createChooser(myIntent, "Choose a viewer"); startActivity(intent); 我很确定这与gallery出于某种原因不能访问我应用程序的私有存储的许

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

myIntent.setDataAndType(Uri.fromFile(file), mimetype);
intent = Intent.createChooser(myIntent, "Choose a viewer");
startActivity(intent);
我很确定这与gallery出于某种原因不能访问我应用程序的私有存储的许可有关。但是,除了将文件移动到外部存储之外,还有其他方法可以做到这一点吗


谢谢

这里有一个简单的“基于单个文件的解决方案”

当您添加文件时,请让Media Store内容提供商使用

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

我做了一些类似的事情来展示画廊里的图片

private void pickFromGallery() {
    Crop.pickImage(this);
}    
crop是一个android类

这是crop类中的一个函数

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

}
从…送达文件。引用文件:

FileProvider是ContentProvider的一个特殊子类,它通过为文件而不是文件创建content:///Uri来促进与应用程序关联的文件的安全共享

内容URI允许您使用临时访问权限授予读写访问权限。创建包含内容URI的意图时,为了将内容URI发送到客户端应用,还可以调用Intent.setFlags()来添加权限。只要接收活动的堆栈处于活动状态,客户端应用程序就可以使用这些权限


您可以尝试:
File File=新文件(filePath);Uri=Uri.fromFile(文件);意向意向=新意向(意向.行动\视图);setDataAndType(uri,文件类型);背景。开始触觉(意图)