为什么我找不到设备上的应用程序的活动?

时间:2014-01-14 10:43:13

标签: android android-intent

我有我想要从另一个打开的应用程序。这是我之前开发的应用程序,但android似乎无法找到它:

   Intent   intent = new Intent("org.example.android.ExampleActivity");
   PackageManager packageManager =getActivity().getPackageManager();
   List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
   boolean isIntentSafe = activities.size() > 0;

isIntentSafe总是假的,我直接从android docs复制了这段代码。

1 个答案:

答案 0 :(得分:1)

执行此操作时:

Intent   intent = new Intent("org.example.android.ExampleActivity");
PackageManager packageManager =getActivity().getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);

您要求PackageManager找到一个{1}},其中有一个Intent过滤器,如下所示:

Activity

这可能不是你想要的,也不是它返回空列表的原因。

使用带有单个参数的构造函数创建 <intent-filter> <action android:name="org.example.android.ExampleActivity"/> </intent-filter> 时,该参数将被解释为ACTION,而不是类名。

如果您正在寻找特定的活动,您应该使用明确的意图解析,如下所示:

Intent

在这种情况下,您创建一个空Intent intent = new Intent(); intent.setClassName ("org.example.android", "org.example.android.ExampleActivity"); PackageManager packageManager =getActivity().getPackageManager(); List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0); ,然后使用显式包名和类名设置类名。