android 打开file not found,android - Android - 无法打开内容:file:/// storage / emulated / 0 - 堆栈内存溢出...

似乎setImageViewUri不再安全地与file:// uris一起使用。

为什么?

Jellybean引入了READ_EXTERNAL_STORAGE权限。 想要从外部存储中读取的应用必须拥有此权限。 在KitKat之前,默认情况下不执行此操作。

启动器不拥有此权限。 实际上,您不能保证您附加的任何RemoteView都拥有该权限。 这使得使用setImageViewUri不安全,因为您不知道远程图像视图是否能够读取给定的uri。

现在怎么办?

选项1:使用setImageViewBitmap。

由于活页夹交易失败,您可能已经远离此选项。 这些技巧只是确保您的图像低于1 MB。 这并不像听起来那么难。 您可以准确计算出图像的大小。 例如,如果您使用的是ARGB_8888图像,则意味着每个像素需要4个字节。 我们可以通过以下方式计算最大尺寸:

1 Mb = 1048576字节= 262144像素= 512 x 512图像

当然,你可以使用RGB_565来挤出更多的像素。

另请注意,如果您的小部件很小,您可能不需要大图像。 您的appwidget可以通过以下方式询问其具体选项:

Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetIds[i]);

int minWidth = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);

int minHeight = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部