3

我正在使用这样的意图:

Intent intent = new Intent(Intent.ACTION_PICK,
        android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);

onActivityResult()我有这个:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode != Activity.RESULT_OK) {
        return; // user cancelled
    }

    Uri imageUri = data.getData();
    if (imageUri == null) {
        // (code to show error message goes here)
    return;
    }

    // Get image path from media store
    String[] filePathColumn = { android.provider.MediaStore.MediaColumns.DATA };
    Cursor cursor = this.getContentResolver().query(imageUri, filePathColumn,
            null, null, null);

    if (cursor == null || !cursor.moveToFirst()) {
        // (code to show error message goes here)
        return;
    }

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

    if (imagePath == null) {
        // error happens here
    }
}

当我从“帖子”“个人资料照片”(见截图)等特定相册中选择图像时,我无法在onActivityResult(). 可以毫无问题地选择其他相册中的图像。

厨房截图

我尝试添加intent.putExtra("return-data", true)data.getExtras()返回null.onActivityResult()

这里有类似的问题,但没有人回答。

请帮忙!

4

2 回答 2

7

啤酒花这将帮助你....

ACTIVITYRESULT_CHOOSEPICTURE 是调用 startActivity(intent, requestCode) 时使用的 int;

public void onActivityResult(int requestCode, int resultCode, Intent data) {
  if(requestCode == ACTIVITYRESULT_CHOOSEPICTURE) {
    BitmapFactory.Options options = new BitmapFactory.Options();
    final InputStream ist = ontext.getContentResolver().openInputStream(intent.getData());
    final Bitmap bitmap = BitmapFactory.decodeStream(ist, null, options);
    ist.close();
  }
}

如果上面的代码不起作用,而不仅仅是参考这个链接......它会很好地展示方式

http://dimitar.me/how-to-get-picasa-images-using-the-image-picker-on-android-devices-running-any-os-version/

于 2013-03-08T06:28:47.230 回答
1

试试这个:

String selectedImagePath = imageUri.getEncodedPath();

它适用于我使用画廊图像选择器

也许是这样:

bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData());
于 2013-03-08T00:36:17.047 回答