Java 从另一个apk获取资源
我整天都在努力解决这个问题,但没有成功。我基本上是试图从另一个apk获取图像资源 因此,如果com.example.app在res文件夹中有一个名为image1.png的图像,我希望com.example2.app能够访问该资源并将其放置在imageview中 我知道您必须使用PackageManager.getResourcesForApplication,但我仍然无法获得实际的资源 任何帮助都会很棒 试试这个:Java 从另一个apk获取资源,java,android,eclipse,package-managers,getresource,Java,Android,Eclipse,Package Managers,Getresource,我整天都在努力解决这个问题,但没有成功。我基本上是试图从另一个apk获取图像资源 因此,如果com.example.app在res文件夹中有一个名为image1.png的图像,我希望com.example2.app能够访问该资源并将其放置在imageview中 我知道您必须使用PackageManager.getResourcesForApplication,但我仍然无法获得实际的资源 任何帮助都会很棒 试试这个: final String packName = "com.example.app
final String packName = "com.example.app ";
Resources resources;
try {
PackageManager manager = getPackageManager();
resources = manager.getResourcesForApplication(packName);
int resID = resources.getIdentifier("image1", "drawable", packName);
Log.d(TAG, "resID = " + resID);
Drawable image = getResources().getDrawable(resID);
Log.d(TAG, "resID = " + resID);
}
catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我想出来了
final String packName = "com.example2.app";
String mDrawableName = "app_icon";
try {
PackageManager manager = getPackageManager();
Resources mApk1Resources = manager.getResourcesForApplication(packName);
int mDrawableResID = mApk1Resources.getIdentifier(mDrawableName, "drawable",packName);
Drawable myDrawable = mApk1Resources.getDrawable( mDrawableResID );
if( myDrawable != null )
TEST.setBackgroundDrawable(myDrawable );
}
catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
请点击此处查看其他问题的更多解释 当我尝试这个时,它是从我自己的应用程序中提取图像的:-/。每次我运行它时,它都会转到可绘制文件夹中的下一个图像。是的,我是。它所做的是从我的应用程序而不是其他应用程序中显示drawable。因此,如果我在所选软件包的可提取列表中选择第6个图像,它将在我的可提取列表中显示第6个图像。我只是想在图像视图中显示错误吗?这样行吗。。。测试。可设置图像绘制(图像);是的,因为您的绘图表中可能有具有相同资源id的图像,这是有意义的。我现在明白了,但我现在对将图像解码为位图感到困惑。我会使用decodeResource吗?更改第9行中的资源对象。它应该是resources.getDrawable(resID)。