返回

如何在 Android 图库中只选择图片?

Android

Android 图库:仅选择图片

在 Android 设备上,从 图库中选择图片通常会导致图片和视频文件都显示出来。然而,有时我们只想选择图片。以下是如何仅在 Android 图库中选择图片的方法:

**子
最简单的方法是使用 Intent.setType() 方法指定媒体类型为 image/*,这将只显示图片文件。

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_CODE);

**子
还可以使用 EXTRA_MIME_TYPES 过滤文件类型,只显示图片文件。

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[]{"image/*"});
startActivityForResult(intent, REQUEST_CODE);

**子
此选项可排除不可下载的文件,如视频文件。

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[]{"image/*"});
intent.putExtra(Intent.EXTRA_EXCLUDE_NON_DOWNLOADABLE, true);
startActivityForResult(intent, REQUEST_CODE);

**子
如果上述方法不起作用,还可以使用 MediaStore 查询图片,并将其显示在列表中。

Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME};
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);

结论

通过遵循这些步骤,你可以仅从 Android 图库中选择图片文件,而无需显示视频文件。这在特定场景下非常有用,例如当你想要创建只包含图片的相册时。

常见问题解答

  • Q:为什么 Intent.setType() 方法不起作用?
    • A:确保你的设备上安装了图库应用程序,并且该应用程序支持仅显示图片文件。
  • Q:如何指定多个媒体类型?
    • A:使用 EXTRA_MIME_TYPES,它接受一个字符串数组作为参数。
  • Q:如何获取选定的图片?
    • A:在 onActivityResult() 方法中,使用 getData() 获取 URI,然后使用 getContentResolver() 加载图片。
  • Q:如何获取选定的图片的绝对路径?
    • A:使用 Uri.getPath() 方法获取绝对路径。
  • Q:如何处理用户未选择任何文件的情况?
    • A:在 onActivityResult() 方法中,检查 data 意图为 null