解析所有匹配意图过滤器的服务
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
与活动一起使用时的方式。
我想检索与特定 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
与活动一起使用时的方式。