获取手机其他apk资源的方法

开发背景

之前有一个需求,对接过程中,要引入其他模块大量资源,但是本身项目中并不像加入res。

在百度了一番之后,收到一些启发。

通过资源名称获取对应的资源。

楼主大胆假设了一下,是不是只要 替换了context是其他apk的context  就能获取到 另一个apk中的资源。

随后在和对接小伙伴一起努力中终于在我的项目中拿到了他项目中的res资源

步骤如下:

1、构造目标项目的context

public static void initContext(Context context) {
        try {
            fileContext = context.createPackageContext("com.gome.filer", 3);//字符串为目标项目包名
        } catch (NameNotFoundException var2) {
            var2.printStackTrace();
        }

    }

2、根据构造好的context和文件名获取对应的资源

int ret = CPResourceUtil.getDrawableId(fileContext, "file_unknown");//字符串为目标资源名

3、根据资源名称获取资源的工具类

import android.content.Context;

public class CPResourceUtil {
    public CPResourceUtil() {
    }

    public static int getLayoutId(Context paramContext, String paramString) {
        return paramContext.getResources().getIdentifier(paramString, "layout", paramContext.getPackageName());
    }

    public static int getStringId(Context paramContext, String paramString) {
        return paramContext.getResources().getIdentifier(paramString, "string", paramContext.getPackageName());
    }

    public static int getDrawableId(Context paramContext, String paramString) {
        return paramContext.getResources().getIdentifier(paramString, "drawable", paramContext.getPackageName());
    }

    public static int getStyleId(Context paramContext, String paramString) {
        return paramContext.getResources().getIdentifier(paramString, "style", paramContext.getPackageName());
    }

    public static int getId(Context paramContext, String paramString) {
        return paramContext.getResources().getIdentifier(paramString, "id", paramContext.getPackageName());
    }

    public static int getColorId(Context paramContext, String paramString) {
        return paramContext.getResources().getIdentifier(paramString, "color", paramContext.getPackageName());
    }

    public static int getArrayId(Context paramContext, String paramString) {
        return paramContext.getResources().getIdentifier(paramString, "array", paramContext.getPackageName());
    }
}

尾注:

小小技巧略作记录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值