我有我想要从另一个打开的应用程序。这是我之前开发的应用程序,但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复制了这段代码。
答案 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);
,然后使用显式包名和类名设置类名。