找不到处理Intent的活动{act = android.intent.action.PICK dat = content:// media / external / images / media}

时间:2017-08-16 07:37:24

标签: android android-intent

在我的应用中,我让用户从他们的图库中选择一张照片。 我使用这样的意图:

Intent pickPictureIntent = new Intent(Intent.ACTION_PICK,
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

在我开始这个意图之前,我会检查是否有任何应用程序可以处理它:

if (pickPictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
    startActivityForResult(pickPictureIntent, SELECT_PICTURE_FROM_GALLERY_REQUEST_CODE);
}

但我的两个用户在尝试从他们的图库中选择照片时会遇到此异常:

Exception android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.PICK dat=content://media/external/images/media }

据我所知,当没有活动来处理意图时会发生这种情况,但正如您所见,我检查了没有活动来处理我的代码中的意图的可能性。

1 个答案:

答案 0 :(得分:7)

试试这个:

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE);

这会打开Documents应用程序。要允许用户也使用他们可能已安装的任何图库应用程序:

Intent getIntent = new Intent(Intent.ACTION_GET_CONTENT);
getIntent.setType("image/*");


Intent pickIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
pickIntent.setType("image/*");

Intent chooserIntent = Intent.createChooser(getIntent, "Select Image");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {pickIntent});

startActivityForResult(chooserIntent, PICK_IMAGE);