Android Marshmallow 6.0,通过意图打开图库说没有应用程序来执行操作

时间:2016-05-07 08:51:26

标签: android gallery android-6.0-marshmallow nexus-7

我正在尝试使用Android 6.0在Nexus 7上打开图库。它没有内置图库,但它确实有 Google相册应用。

我使用以下代码打开图库:

    Intent i = new intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
// Always show the chooser (if there are multiple options available)
    startActivityForResult(Intent.createChooser(i, "Select Picture"), PICK_IMAGE_REQUEST);

以上代码适用于6.0以下的所有版本。请注意,我已经使用RUN TIME PERMISSIONS访问图库并已获得访问图库/或外部存储的权限。

现在执行代码时,我会看到一个标题为“选择图片”的透明屏幕,中间是一个文本没有应用可以执行此操作。

现在我该如何选择图像并在我的应用中使用。

感谢任何帮助。

由于

3 个答案:

答案 0 :(得分:1)

  

我使用以下代码打开图库

该代码与" gallery"无关。该代码要求从特定内容集合中挑选一段内容。设备上可能有零个,一个或多个活动,以支持Intent结构。

  

以上代码适用于6.0以下的所有版本

仅适用于碰巧有一个或多个活动满足Intent结构的设备。

  

现在我该如何选择图像并在我的应用中使用。

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

// use PackageManager to see if there is anything that supports this
// Intent structure, or just blindly make the following call and handle
// the ActivityNotFoundException

startActivityForResult(i, PICK_IMAGE_REQUEST);
  

我正在使用此代码,因此只会打开图库,而不是选择图像的任何其他选项

您的代码中没有任何内容可以将其限制为只有一个"画廊"。

答案 1 :(得分:0)

不允许发表评论,因为我没有足够的积分。但这只是一个建议,如果你直接通过意图怎么样?像这样:

startActivityForResult(i, PICK_IMAGE_REQUEST);

答案 2 :(得分:0)

使用这行代码而不是你已完成的代码

Intent i = new intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, PICK_IMAGE_REQUEST);