Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法从ResolveInfo实例获取意图筛选器_Android_Android Intent_Intentfilter_Android Package Managers - Fatal编程技术网

Android 无法从ResolveInfo实例获取意图筛选器

Android 无法从ResolveInfo实例获取意图筛选器,android,android-intent,intentfilter,android-package-managers,Android,Android Intent,Intentfilter,Android Package Managers,我有一个列表,其中包含可以处理我的两个ACTION Intent.ACTION\u PICK和MediaStore.ACTION\u IMAGE\u CAPTURE中任何一个的应用程序。稍后,我将使用数组适配器使用此列表中的信息填充我的listivew 在我的onItemClickListener中,我可以从ResolveInfo实例获取ActivityInfo和ComponentName。但我无法从ResolveInfo获取IntentFilter实例。尝试获取它会引发NullPointerE

我有一个列表,其中包含可以处理我的两个ACTION Intent.ACTION\u PICK和MediaStore.ACTION\u IMAGE\u CAPTURE中任何一个的应用程序。稍后,我将使用数组适配器使用此列表中的信息填充我的listivew

在我的onItemClickListener中,我可以从ResolveInfo实例获取ActivityInfo和ComponentName。但我无法从ResolveInfo获取IntentFilter实例。尝试获取它会引发NullPointerException,但我列表中的任何应用程序必须已解析我的其中一个意图,它才能位于列表中

这是抛出nullpointerexception IntentFilter filter=launchable.filter的行

问题:


如何获取所选应用程序在onClickListner正文中解析的意图?

您需要明确表示希望返回筛选器。而不是:

List<ResolveInfo> launchables=pm.queryIntentActivityOptions(
    this.getComponentName(),
    new Intent[]{takePicture}, photoPickerIntent, 0);
使用以下命令:

List<ResolveInfo> launchables=pm.queryIntentActivityOptions(
    this.getComponentName(),
    new Intent[]{takePicture}, photoPickerIntent,
    PackageManager.GET_RESOLVED_FILTER);
我还没有测试过这个。请注意,与返回IntentFilter相关的许多错误和功能缺失。在很多情况下,文档是错误的,在很多情况下,代码没有达到您期望的效果,并且没有很多好的工作示例


试试这个,让我们知道它是否有效。

我不太了解QueryEntityOptions的第2和第3个参数我在做的是猜测工作。我无法从android文档中很好地理解它们,因为甚至没有一个示例。你很了解这个方法吗?对于答案来说,它是完美的。效果很好。我非常感谢你的帮助。我不太理解QueryEntityOptions中的第三个参数,这就是为什么我要置零。请就我之前的评论给我反馈。ResolveInfo的某些字段默认不填写;必须使用GET_uu常量来请求它们。@gikarasojokinene由于某种原因,我没有看到您的评论。很抱歉。基本上,@j_um提供了答案。第三个参数是一组标志。您需要使用这些标志指定希望在ResolveInfo对象中返回的信息,因为默认情况下很多信息不会返回。
List<ResolveInfo> launchables=pm.queryIntentActivityOptions(
    this.getComponentName(),
    new Intent[]{takePicture}, photoPickerIntent,
    PackageManager.GET_RESOLVED_FILTER);