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

时间:2015-01-21 17:21:07

标签: android android-intent android-service intentfilter android-package-managers

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

TestService的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()));

返回值= 0.我不知道是什么问题?

1 个答案:

答案 0 :(得分:2)

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

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

话虽如此,如果您希望<intent-filter>保持原样,则需要Intent<data><category>以及<action>。请注意,与服务一起使用的Intents 会自动添加CATEGORY_DEFAULTIntents与活动一起使用的方式。