无论如何要判断服务是否已导出?

时间:2014-07-30 09:01:11

标签: android service

我正在创建一个提供导出服务的库项目(必须导出,因为其他应用程序将使用它),我想确保使用该库项目的任何人将服务声明为exported=trueAndroidManifest.xml,并且不遵守规则的人必须收到警告。但是我不知道如何判断它是否被声明为exports = true,是否有人有建议?

1 个答案:

答案 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);