Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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
Java 从另一个apk获取资源_Java_Android_Eclipse_Package Managers_Getresource - Fatal编程技术网

Java 从另一个apk获取资源

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

我整天都在努力解决这个问题,但没有成功。我基本上是试图从另一个apk获取图像资源

因此,如果com.example.app在res文件夹中有一个名为image1.png的图像,我希望com.example2.app能够访问该资源并将其放置在imageview中

我知道您必须使用PackageManager.getResourcesForApplication,但我仍然无法获得实际的资源

任何帮助都会很棒

试试这个:

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