【发布时间】:2016-04-20 11:47:25
【问题描述】:
我有一个显示图像的应用小部件。
Uri uri = Uri.parse("android.resource://" + packageName + "/" + resId);
rv = new RemoteViews(defaultPackageName, widgetLayout);
rv.setImageViewUri(R.id.image, uri);
图像存储在drawable 目录下的不同包中,我得到它的资源ID 如下:
Resources r = getPackageManager().getResourcesForApplication(otherPackage);
int resId = r.getIdentifier("image_1", "drawable", otherPackage);
在image_1 是一个带有android:src 标签的xml 位图之前一切正常:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/pat1"
android:tileMode="repeat"/>
经过长时间的研究,我发现了什么以及我尝试了什么:
该问题仅出现在棒棒糖(5.0、5.1 等...)中,并且仅出现在 AppWidgetProvider 中(如果我在活动中使用此资源,它可以正常工作)。
-
它既不适用于其他方法,例如:
rv.setImageViewBitmap(R.id.image, BitmapFactory.decodeResource(r, resId)); 它正在获取
@drawable/pat1的正确资源ID,但从默认包中获取具有相同资源ID 的drawable。 (我已经在两个包中的R.java中检查过)如果没有具有该 ID 的资源,它只会在R.id.image中放置任何内容,并且小部件似乎是空白的。-
我尝试像这样在
image_1.xml中硬编码包名:android:src="@com.other.package.name:drawable/pat1"没有帮助。
问题出现在具有不同 rom 和启动器的真实设备以及模拟器上。
我希望我很清楚,希望有人遇到类似的问题并可以分享解决方案或提出更多解决方法。
【问题讨论】:
标签: android android-5.0-lollipop android-appwidget android-5.1.1-lollipop appwidgetprovider