zoukankan      html  css  js  c++  java
  • Android获取所有应用的资源id和对应的uri

    背景
    
    在某些应用中,为了实现应用apk资源放入重复利用,或者使用反射得到本应用的资源,需要使用反射方式获得,但Resources类中也自带了这种获取方式,并且功能更加强大
    
    你可以获取string,color,drawable,raw,xml等文件,因此也就意味着,这里可以获取的资源是res中已定义的资源,对于控件id的获取,暂时无法做到
    
    public int getIdentifier(String name, String defType, String defPackage) {
        if (name == null) {
            throw new NullPointerException("name is null");
        }
        try {
            return Integer.parseInt(name);
        } catch (Exception e) {
            // Ignore
        }
        return mAssets.getResourceIdentifier(name, defType, defPackage);
    }
    
    获取资源的Id
    
        获取当前应用的资源Id
    
    int drawableId = mContext.getResources().getIdentifier("ic_launcher","drawable", mContext.getPackageName());
    mImageView.setImageResource(drawableId);
    
        获取其他应用的资源Id
    
    int id = mContext.getResources().getIdentifier("icon", "drawable", "com.android.testproject");
    // 或者
    int id = mContext.getResources().getIdentifier("com.android.testproject:drawable/icon", null, null);
    
        整合到一起
    
    public static int getResourceId(Context context, String name, String type, String packageName){
        Resources themeResources=null;
        PackageManager pm=context.getPackageManager();
        try {
            themeResources=pm.getResourcesForApplication(packageName);
            return themeResources.getIdentifier(name, type, packageName);
        } catch (NameNotFoundException e) {
    
            e.printStackTrace();
        }
        return 0;
    }
    
    获取系统资源Id
    
    int id = getResources().getIdentifier("actionbar_bg", "drawable","android");  //注意,最后一个参数必须是“android”
    
    获取资源的Uri
    
    android系统中,应用的资源存储时也通常会被存入 数据库,也可以被共享,
    因此来说资源也可以获得uri
    
    public static  Uri getResourceUri(int resId,String packageName) {
        return Uri.parse("android.resource://"+packageName+"/"+resId);
    }
  • 相关阅读:
    psi
    firefox修改语言
    automapper
    堆喷图解
    脱壳系列_0_FSG壳_详细版
    脱壳系列_1_UPX壳_详细版
    算法01-最大子数组详解
    逆向MFC程序
    如何执行shell命令
    Unity之流光效果
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/9684760.html
Copyright © 2011-2022 走看看