仅从图库中选择图片,而不是像照片应用程序那样的其他应用程序

时间:2015-06-09 04:31:00

标签: android image gallery

我试图仅从Android图库中选择图像,而不是其他应用程序,如照片,文件管理器等

我需要一个解决方案来直接打开Gallery App,还是可以使用照片应用程序来选择图像?

1)从图库中选择

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
// start the image capture Intent
startActivityForResult(intent,CAMERA_CAPTURE_IMAGE_REQUEST_CODE);

2)onActivityResult结果代码

try {
    // bimatp factory
    BitmapFactory.Options options = new BitmapFactory.Options();
    // downsizing image as it throws OutOfMemory Exception for larger images
    options.inSampleSize = 2;
    final Bitmap bitmap = BitmapFactory.decodeFile(fileUri.getPath(),options);

    descimage.setImageBitmap(bitmap);

    bitmap.compress(CompressFormat.JPEG, 80, new FileOutputStream(new File(fileUri.getPath())));

    photostatus = 1;
    pbar.setVisibility(View.VISIBLE);

    txtbrowser.setEnabled(false);
    new upload().execute();

} catch (NullPointerException e) {
        e.printStackTrace();
}

2 个答案:

答案 0 :(得分:0)

你应该知道在运行Lollipop的某些设备上Gallery no longer exists。照片应用程序是替代品,处理选择图像的意图应该没有问题。 Intent.ACTION_GET_CONTENT通常为recommended for selecting images,例如:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, ID);

在已安装它的设备上打开图库会议here。基本上每个不同的供应商可能会发布不同的图库应用。

可以通过使用PackageManager.queryIntentActivities() API迭代用户设备上的所有可用包,而不显示选择器对话框来启动隐式意图(例如选择图像)的特定活动,以便您可以明确地启动你需要的那个。

答案 1 :(得分:0)

此意图允许您从默认图库中选择图像。

 // in onCreate or any event where your want the user to  select a file
           Intent intent = new Intent();
           intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent,
                                "Select Picture"), SELECT_PICTURE);

用于在onActivityResult()

中接收所选图像
 public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            if (requestCode == SELECT_PICTURE) {
                Uri selectedImageUri = data.getData();
                selectedImagePath = getPath(selectedImageUri);
            }
        }
    }

我从here

获得了解决方案