解析所有匹配意图过滤器的服务

Resolve all Services matching an intent filter

我想检索与特定 intent-filter 匹配的所有服务。我有以下代码:

AndroidManifest.xml 一个测试服务:

    <service
        android:name=".TestService"
        android:exported="true"
        android:permission="com.example.MY_PERMISSIONS"
        >
        <intent-filter>
            <action android:name="com.example.myaction" />

            <data
                android:host="myhost"
                android:scheme="https" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </service>

查询应用程序中的 PackageManager :

    PackageManager packageManager = getPackageManager();
    Intent intent = new Intent("com.example.myaction");
    List<ResolveInfo> resolveInfos = packageManager.queryIntentServices(intent, 0);
    Log.d(TAG,String.valueOf(resolveInfos.size()));

这个returns一个值=0。不知道是什么问题?

您的 Intent<intent-filter> 不匹配。

恕我直言,这主要是 <intent-filter> 的问题,因为 <data><category> 通常不与服务 <intent-filter> 定义一起使用。

也就是说,如果您想保持 <intent-filter> 不变,您还需要有一个与 <data><category> 相匹配的 Intent作为 <action>。请注意,Intents 与服务一起使用 而不是 会自动将 CATEGORY_DEFAULT 添加到其中,Intents 与活动一起使用时的方式。