我认为除非使用内容提供商,否则无法访问其他APK中包含的资源。但是,我偶然发现了一个名为Better Keyboard的应用程序。它使用皮肤,所以我决定下载一个皮肤的例子。
An example skin让我感到惊讶。它几乎不包含任何代码,仅声明活动而不包含内容提供者。尽管如此,它包含资源,如果安装了带皮肤的APK,它们显然可以通过Better Keyboard应用程序进行访问。那怎么办?
答案 0 :(得分:21)
我相信你正在寻找
Resources res = mPackageManager.getResourcesForApplication("org.example.foo");
答案 1 :(得分:3)
试试这个
PathClassLoader loader =
new PathClassLoader ("/data/app/com.skin.apk", null,PathClassLoader.getSystemClassLoader());
InputStream f = loader.getResourceAsStream("res/drawable/icon.png");
Bitmap bitmap=BitmapFactory.decodeStream(f);
BitmapDrawable b=new BitmapDrawable(bitmap);
mButton.setBackgroundDrawable(b);
答案 2 :(得分:0)
可以使用getresoucesforapplication
并且您需要res.getidentifier
来检索资源ID。但是,在检索样式资源时似乎不起作用。