【问题标题】:Resolve all Services matching an intent filter解析与意图过滤器匹配的所有服务
【发布时间】:2015-01-21 17:21:06
【问题描述】:

我想检索与特定意图过滤器匹配的所有服务。我有以下代码:

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。不知道是什么问题?

【问题讨论】:

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


    【解决方案1】:

    您的Intent&lt;intent-filter&gt; 不匹配。

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

    话虽如此,如果您想保持&lt;intent-filter&gt; 原样,您需要有一个与&lt;data&gt;&lt;category&gt; 以及&lt;action&gt; 匹配的Intent。请注意,与服务一起使用的Intents不会自动将CATEGORY_DEFAULT 添加到它们中,就像Intents 与活动一起使用时一样。

    【讨论】:

    • 谢谢!删除&lt;data&gt; 有效。我如何修改意图以仅将 &lt;data&gt; 与我的示例中的主机和架构参数合并?
    • @devashishjasani:在Intent 上使用合适的Uri 致电setData()setDataAndType()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2021-05-22
    • 2016-10-17
    • 2012-01-12
    相关资源
    最近更新 更多