Фильтрация услуг по категориям - PullRequest
2 голосов
/ 04 февраля 2020

Я изучаю 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 объект, похоже, не содержит информации о фильтрах намерений, и несколько поисков кажутся намекнуть, что это не реализовано

Есть идеи, если это возможно?

...