我想通了。查看 Android 源代码后,我发现无法扩展标准标签的属性。相反,元数据可用于实现类似的结果。
我设计的解决方案是在我希望在我的服务中“注册”的应用程序中包含一个元数据标签。例如:
AndroidManifest.xml(目标应用程序)
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<meta-data android:name="MyAttribute" android:value="myvalue" />
我开发的服务会扫描已安装的软件包以查找具有相关元数据的软件包:
List<PackageInfo> packages = getPackageManager().getInstalledPackages(PackageManager.GET_META_DATA);
for (int a = packages.size();-1; a >= 0; a--) {
PackageInfo pkg = packages.get(a);
ApplicationInfo ai = packages.get(a).pkg.applicationInfo;
boolean remove = true;
if (ai.metaData != null && ai.metaData.get("LogRetrievalAgent") != null) {
remove = ai.metaData.get("LogRetrievalAgent").toString().compareTo("test") != 0;
}
if (remove) {
packages.remove(pkg);
}
}