2014-10-28 37 views
2

我有一个应用程序,例如。 com.app。我也有一个可选模块com.app.module.m1。 可选模块使用主应用程序中已有的大量资源,主要是字符串和drawable。使用主应用程序资源的附加APK模块APK

该模块本身是毫无意义的,不会运行(它只是一个只能由主应用程序启动的组件集合)。没有启动器图标,所有入口点需要signature级别权限。

如果可能,我宁愿不重复这些资源,只使用主应用程序中的资源。

我可以以某种方式访问​​com.app中从com.app.module.m1定义的资源吗?

回答

0

使用这些方法:
public Resources getResourcesForApplication(String pkgName);PackageManagerResources
public int getIdentifier(String name, String defType, String defPackage);

例如,如果要在包“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(); 
} 
+0

XML怎么样?我期待使用@ com.app:string/string_id,但它会突出显示为错误。 – copolii 2014-11-04 01:33:29

+0

@copolii看看这个答案http://stackoverflow.com/a/16565454/2640554 – 2014-11-04 02:52:06