Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否可以在不使用内容提供商的情况下访问另一个APK中的资源?_Android_Android Contentprovider - Fatal编程技术网

Android 是否可以在不使用内容提供商的情况下访问另一个APK中的资源?

Android 是否可以在不使用内容提供商的情况下访问另一个APK中的资源?,android,android-contentprovider,Android,Android Contentprovider,我认为除非使用内容提供者,否则不可能访问其他APK中包含的资源。然而,我偶然发现了一款名为BetterKeyboard的应用程序。它使用皮肤,所以我决定下载一个皮肤的例子 我真的很惊讶。它几乎不包含代码,只声明一个活动,没有内容提供者。除非它包含资源,而且如果安装了带有皮肤的APK,显然可以通过更好的键盘应用程序访问这些资源。那么它是如何做到的呢?试试这个 PathClassLoader loader = new PathClassLoader ("/data/app/com.skin.a

我认为除非使用内容提供者,否则不可能访问其他APK中包含的资源。然而,我偶然发现了一款名为BetterKeyboard的应用程序。它使用皮肤,所以我决定下载一个皮肤的例子

我真的很惊讶。它几乎不包含代码,只声明一个活动,没有内容提供者。除非它包含资源,而且如果安装了带有皮肤的APK,显然可以通过更好的键盘应用程序访问这些资源。那么它是如何做到的呢?

试试这个

 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);

我相信你在找我

Resources res=mPackageManager.getResourcesForApplication(“org.example.foo”)


使用
getResourcesforApplication
是可能的,您需要
res.getidentifier
来检索资源Id。但是,在检索样式资源时,它似乎不起作用