[英]Is it possible to access resources in another APK without using content providers?
我认为除非使用内容提供商,否则无法访问其他APK中包含的资源。 但是,我偶然发现了一个名为Better Keyboard的应用程序。 它使用皮肤,所以我决定下载一个皮肤的例子。
皮肤的一个例子让我感到惊讶。 它几乎不包含任何代码,仅声明活动而不包含内容提供者。 尽管如此,它包含资源,如果安装了带皮肤的APK,它们显然可以通过Better Keyboard应用程序进行访问。 那怎么办?
我相信你在找
Resources res = mPackageManager.getResourcesForApplication("org.example.foo");
试试这个
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);
通过使用getresoucesforapplication
可以使用res.getidentifier
来检索资源ID。 但是,在检索样式资源时似乎不起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.