私はこれを理解しました。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);
}
}