我正在创建一个提供导出服务的库项目(必须导出,因为其他应用程序将使用它),我想确保使用该库项目的任何人将服务声明为exported=true
在AndroidManifest.xml
,并且不遵守规则的人必须收到警告。但是我不知道如何判断它是否被声明为exports = true,是否有人有建议?
答案 0 :(得分:0)
使用PackageManager.getServiceInfo()获取ServiceInfo,这是ComponentInfo的子类,拥有exported
公共变量。
使用以下方法执行此操作
private boolean isServiceExported(ComponentName componentName) {
try {
ServiceInfo serviceInfo = getPackageManager()
.getServiceInfo(componentName, PackageManager.GET_META_DATA);
return serviceInfo.exported;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return false;
}
将其命名为
ComponentName component = new ComponentName("com.anotherapp.pkg", "com.anotherapp.pkg.class_name");
boolean isExported = isServiceExported(component);