无法从ResolveInfo实例获取意图过滤器

时间:2015-12-15 14:38:58

标签: android android-intent intentfilter android-package-managers

我有一个列表,其中包含可以处理我的两个操作Intent.ACTION_PICKMediaStore.ACTION_IMAGE_CAPTURE中的任何一个的应用。我后来使用数组适配器用我的listivew填充此列表中的信息。

在我的onItemClickListener中,我可以从ActivityInfo个实例中获取ComponentNameResolveInfo但是无法获得 {{1来自IntentFilter的实例(尝试让它抛出NullPointerException ),和YET 我列表中的任何应用程序必须解决我的一个意图,让它成为列表

这是抛出nullpointerexception ResolveInfo

的行
IntentFilter filter = launchable.filter;

问题

如何在我的onClickListner主体中获取所选应用解析的意图?

1 个答案:

答案 0 :(得分:1)

您需要明确说要返回过滤器。而不是:

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有很多错误和缺少的功能。在很多情况下,文档是错误的,在很多情况下代码没有按照您的预期执行,并且没有很多好的工作示例。

试试这个并告诉我们它是否有效。