Retrieve Picasa Image for Upload from Gallery Retrieve Picasa Image for Upload from Gallery android android

Retrieve Picasa Image for Upload from Gallery


I have faced the exact same problem,
Finally the solution I found, was to launch an ACTION_GET_CONTENT intent instead of an ACTION_PICK, then make sure you provide a MediaStore.EXTRA_OUTPUT extra with an uri to a temporary file. Here is the code to start the intent :

public class YourActivity extends Activity {    File mTempFile;    int REQUEST_CODE_CHOOSE_PICTURE = 1;    (...)    public showImagePicker() {         mTempFile = getFileStreamPath("yourTempFile");        mTempFile.getParentFile().mkdirs();        Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);        intent.setType("image/*");        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTempFile));        intent.putExtra("outputFormat",Bitmap.CompressFormat.PNG.name());                               startActivityForResult(intent,REQUEST_CODE_CHOOSE_PICTURE);    }    (...)}

You might need to mTempFile.createFile()

Then in onActivityResult, you will be able to get the image this way

protected void onActivityResult(int requestCode, int resultCode, Intent data) {    case REQUEST_CODE_CHOOSE_PICTURE:                Uri imageUri = data.getData();                if (imageUri == null || imageUri.toString().length() == 0) {                    imageUri = Uri.fromFile(mTempFile);                    file = mTempFile;                }                                    if (file == null) {                                       //use your current method here, for compatibility as some other picture chooser might not handle extra_output                                    }}

Hope this helps

Then you should delete your temporary file on finish (it is in internal storage as is, but you can use external storage, I guess it would be better).


Why are you using the managedQuery() method? That method is deprecated.

If you want to convert a Uri to a Bitmap object try this code:

public Bitmap getBitmap(Uri uri) {    Bitmap orgImage = null;    try {        orgImage = BitmapFactory.decodeStream(getApplicationContext().getContentResolver().openInputStream(uri));    } catch (FileNotFoundException e) {        // do something if you want    }    return orgImage;}