首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图库无法从内部存储显示图像

图库无法从内部存储显示图像
EN

Stack Overflow用户
提问于 2015-07-18 06:51:15
回答 3查看 1.4K关注 0票数 1

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

代码语言:javascript
复制
myIntent.setDataAndType(Uri.fromFile(file), mimetype);
intent = Intent.createChooser(myIntent, "Choose a viewer");
startActivity(intent);

我很确定这与许可有关,因为出于某种原因,画廊无法访问我的应用程序的私有存储空间。但是,除了将文件移动到外部存储之外,还有其他方法吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-18 13:31:05

FileProvider提供来自内部存储器的文件。引用文件:

file:///是ContentProvider的一个特殊子类,它通过为一个文件创建一个内容:// Uri而不是一个FileProvider Uri来促进与应用程序关联的文件的安全共享。 内容URI允许您使用临时访问权限授予读和写访问权限。当创建包含内容URI的意图时,为了将内容URI发送到客户端应用程序,还可以调用Intent.setFlags()来添加权限。只要接收活动的堆栈处于活动状态,客户端应用程序就可以使用这些权限。

票数 2
EN

Stack Overflow用户

发布于 2015-07-18 07:09:02

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

添加文件时,让Media内容提供商知道使用

代码语言:javascript
复制
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,  
                                       Uri.fromFile(imageAdded)));
票数 1
EN

Stack Overflow用户

发布于 2015-07-18 07:10:43

我做了一些这样的事情来展示画廊的图片。

代码语言:javascript
复制
private void pickFromGallery() {
    Crop.pickImage(this);
}    

<-->作物是一个android类。

这是作物类中的一个函数。

代码语言:javascript
复制
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();
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31488639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档