android - 无法在广播接收器中使用 Intent 过滤器列出应用程序

标签 android android-intent

我想列出应用程序(具有相同的 Intent 过滤器)。我能够通过向 Activity 添加 Intent 过滤器来实现这一点

         <activity
            android:name=".Activities.MainActivity"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateHidden|adjustNothing">

            <intent-filter>
                <action android:name="com.example.identifier" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="isApp" />
            </intent-filter>
        </activity>

我可以通过

检索所有具有此 Intent 的应用
        String uri = "isApp:";
        Intent intent = new Intent("com.example.identifier",
                Uri.parse(uri));
        PackageManager manager = getPackageManager();
        List<ResolveInfo> list = manager.queryIntentActivities(intent, 0);

但是,这会在 intentChoose 中使用此代码段显示时启动 Activity :

Intent zoneIntent = new Intent("com.example.identifier",
                    Uri.parse(uri));
            Intent openInChooser = Intent.createChooser(zoneIntent, "Complete Action with").setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(openInChooser);

但我希望它能调用广播接收器。所以,我将 Intent 移动到 AndroidManifest.xml 中的广播接收器,例如:

<receiver
            android:name=".ExampleReceiver"
            android:enabled="true">
            <intent-filter>
                <action android:name="com.example.identifier" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="isApp" />
            </intent-filter>
        </receiver>

并且返回具有此 Intent 的应用程序数量的代码段现在返回 0,即使该应用程序仍在该设备上也是如此。这可以用广播接收器来完成,还是我应该考虑用另一种方法。谢谢。

最佳答案

调用queryIntentActivities() 只会返回Activity。它不会返回 BroadcastReceiver。如果您想使用 BroadcastReceiver 执行此操作,则需要调用 queryBroadcastReceivers()

关于android - 无法在广播接收器中使用 Intent 过滤器列出应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33211432/

相关文章:

java - 有条件地订阅 rxJava2 Observable

android - 找不到处理 Intent 的 Activity { act=android.intent.action.PICK dat=content ://media/external/images/media }

java - android - 如何以编程方式读取 list Intent ?

android - 用于从 Android 上的 gmail 应用程序下载附件的 Intent 过滤器

android - 用于水平仪的方向传感器加速度计

java - setFlags 后工具栏与状态栏重叠

android - 如何解决 "Inconsistencies in the existing project dependencies found"的问题?

android - 如何探索android中的样式

android - 从非启动器应用程序选择并启动快捷方式

android - 运行应用程序但不从启动器运行