Android获取插件Activity的资源

1.思路:

  • 1.1 通过反射AssetManager的addAssetPath方法传入插件activity的路径得到插件的AssetManager
  • 1.2 通过AssetManager创建插件的Resources对象
  • 1.3 通过得到插件的Resources对象就可以通过getIdentifier方法得的插件的所有资源信息

2.代码

 /**
   * 创建assetmanager
   * @param dexPath
   * @return
   */
  private AssetManager createAssetManager(String dexPath) {

    try {
      AssetManager assetManager = AssetManager.class.newInstance();
      Method addAssetPath = assetManager.getClass().getMethod("addAssetPath", String.class);
      addAssetPath.invoke(assetManager, dexPath);
      return assetManager;
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }

  }

  /**
   * 创建resources
   * @param assetManager
   * @return
   */
  private Resources createResources(AssetManager assetManager) {
    Resources superRes =this.getResources();
    Resources resources = new Resources(assetManager, superRes.getDisplayMetrics(), superRes.getConfiguration());
    return resources;
  }

 int layoutID = getResources().getIdentifier("activity_main", "layout", "com.Company.Demo");

后面的包名是插件的包名,这个样就可以获取插件的所有资源了

你可能感兴趣的:(Android获取插件Activity的资源)