我有一个应用程序,例如。 com.app
。我还有一个可选模块com.app.module.m1
。
可选模块使用主应用程序中已存在的大量资源,主要是字符串和drawable。
模块本身是没有意义的,不会运行(它只是一个只能由主应用程序启动的组件集合)。没有启动器图标,所有入口点都需要signature
级权限。
如果可能的话,我宁愿不复制这些资源,只使用主应用程序中的资源。
我可以以某种方式访问com.app
中com.app.module.m1
中定义的资源吗?
答案 0 :(得分:0)
使用这些方法:
public Resources getResourcesForApplication(String pkgName);
中的PackageManager
public int getIdentifier(String name, String defType, String defPackage);
中的Resources
。
例如,如果要在包“com.app”中获取名为“app_name”的字符串资源。
try{
Resources res = pm.getResourcesForApplication("com.app");
int resId = res.getIdentifier("app_name", "string", "com.app");
if(resId > 0)
String mainAppName = getResources().getText(resId);
} catch (NameNotFoundException e) {
e.printStackTrace();
}