6

我目前遇到以下问题:当我想从图库中检索图像时,我使用以下代码来启动图库的意图。

public void useGallery() {
    this.intentbasedleave=true;
    Intent intent = new Intent(Intent.ACTION_PICK,
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    intent.setType("image/*");
    startActivityForResult(
            Intent.createChooser(intent, getString(R.string.pleaseselect_image)), IMAGE_PICK);
}

当我从图库中获取数据时,我使用此方法:

private void imageFromGallery(int resultCode, Intent data) {
    Uri selectedImage = data.getData();
    String[] filePathColumn = { MediaStore.Images.Media.DATA };

    Cursor cursor = getContentResolver().query(selectedImage,
            filePathColumn, null, null, null);
    cursor.moveToFirst();

    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
    String filePath = cursor.getString(columnIndex);
    cursor.close();

    this.updateImageView(BitmapFactory.decodeFile(filePath));
}

这有效,除非选择的图片来自 Google+ 或即时上传。那么 BitmapFactory.decodeFile(filePath)) 似乎为空?因为该方法引发了一个空指针异常。

因此,我的问题是:我如何使用来自 Google+ 的图片和来自画廊的即时上传图片?

4

1 回答 1

1

使用BitmapFactory.decodeUri而不是BitmapFactory.decodeFile.

您可以将方法简化imageFromGallery

private void imageFromGallery(int resultCode, Intent data) {
  Uri selectedImage = data.getData();
  updateImageView(BitmapFactory.decodeUri(getContext().getContentResolver(), selectedImage));
}

(假设您可以从某个地方访问上下文)。

于 2013-09-30T16:03:55.003 回答