我想检索与特定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.我不知道是什么问题?
答案 0 :(得分:2)
您的Intent
与<intent-filter>
不匹配。
这主要是<intent-filter>
,恕我直言的一个问题,因为<data>
和<category>
通常不会与服务<intent-filter>
定义一起使用。
话虽如此,如果您希望<intent-filter>
保持原样,则需要Intent
与<data>
和<category>
以及<action>
。请注意,与服务一起使用的Intents
不会自动添加CATEGORY_DEFAULT
,Intents
与活动一起使用的方式。