Я изучаю android, написав панель запуска поверх AOSP и изучая способы получения всех служб из установленных пакетов, которые имеют category
в своих intent-filter
Мой текущий подход is
final PackageManager pm = getPackageManager();
int flags = PackageManager.GET_INTENT_FILTERS | PackageManager.GET_SERVICES;
List<PackageInfo> packages = pm.getInstalledPackages(flags);
for (PackageInfo packageInfo : packages) {
Log.d(TAG, "Installed package: " + packageInfo.packageName);
for (ServiceInfo service : packageInfo.services) {
Log.d(TAG, "Service: " + service.packageName);
// ???
}
}
Пример служб, определенных в Manifest.xml
:
<service
android:name=".ComplicationIntentService"
android:exported="true">
<intent-filter>
<category android:name="my.intent.CATEGORY" />
</intent-filter>
</service>
К сожалению, ServiceInfo
объект, похоже, не содержит информации о фильтрах намерений, и несколько поисков кажутся намекнуть, что это не реализовано
Есть идеи, если это возможно?