【问题标题】:Get resources from another apk从另一个 apk 获取资源
【发布时间】:2012-07-02 12:59:18
【问题描述】:

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

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

我知道你必须使用 PackageManager.getResourcesForApplication,但我仍然未能成功获取实际资源。

任何帮助都会很棒!

【问题讨论】:

    标签: java android eclipse package-managers getresource


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 当我尝试这个时,它正在从我自己的应用程序中提取图像:-/。每次我运行它时,它都会转到可绘制文件夹中的下一张图片。
    • 是的,我是。它正在做的是从我的应用程序而不是其他应用程序显示可绘制对象。因此,如果我在所选包的可绘制列表中选择第 6 个图像,它将在我的可绘制列表中显示第 6 个图像。我只是想在图像视图中显示错误吗?这行得通吗... TEST.setImageDrawable(image);
    • 是的,因为您的可绘制对象中可能有具有相同资源 ID 的图像
    • 这是有道理的。我现在明白了,但我现在对将图像解码为位图感到困惑。我会使用 decodeResource 吗?
    • 在第9行更改资源对象。应该是resources.getDrawable(resID)。
    【解决方案2】:

    想通了……

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

    在此处查看其他问题的更多解释! Share raw resource between apk's

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-18
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多