我想列出具有相同意图过滤器的应用程序。我可以通过将意图过滤器添加到一个活动中来实现这一点。
<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>
我可以使用以下方法检索所有包含此意图的应用程序:
String uri = "isApp:";
Intent intent = new Intent("com.example.identifier",
Uri.parse(uri));
PackageManager manager = getPackageManager();
List<ResolveInfo> list = manager.queryIntentActivities(intent, 0);
然而,使用以下代码片段在intentChoose中显示时,这将启动该活动:
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);
但是我希望它能调用广播接收器。因此,我将意图移动到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>
现在返回具有此意图的应用程序数量的代码片段即使该应用程序仍然在设备上也返回0。这是否可以通过广播接收器完成,还是我应该考虑其他方法。谢谢。
Activity
,而不能找到BroadcastReceiver
。 - David Wasser