我创建了一个自定义包 com.test1.web ,我在这个包中有一个类。 (有活动的课程延伸)
我的应用程序使用 com.test2.main 源运行。
我无权访问自定义包中的 R.layout 。
我该怎么做才能访问它?
答案 0 :(得分:1)
您可以在扩展程序中创建RemoveViews并通过意图将其发送到主程序包。
Intent intent = new Intent("OPEN_YOUR_MAIN_APP");
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_layout);
intent.putExtra("layout", views);
startActivity(intent);
或者另一种方法是通过方法Context#createPackageContext(String, int)在主应用程序中创建扩展应用程序的上下文 并调用Context#getResources()
try {
Context extensionAppContext = context.createPackageContext("com.test1.web", Context.CONTEXT_RESTRICTED);
Resources extensionAppResources = extensionAppContext.getResources();
int layoutId = extensionAppResources.getIdentifier("layout_name", "layout", "com.test1.web");
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}