public void uploadpicture(View view)
{
Intent intent = new Intent();
intent.setType(\"image/*\");
intent.setAction(Inten
Tested Code here
public class SelectPhotoActivity extends Activity {
private static final int SELECT_PICTURE = 1;
private String selectedImagePath="";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivityForResult(intent, SELECT_PICTURE);
}
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
@Override
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 you can set the image
}
}
}
}
From your log it looks like you are trying to pick an image from Picasa folder dat=content://com.android.sec.gallery3d.provider/picasa/item/5147009501910019474
, and these must be handled differently, because data in MediaStore.Images.Media.DATA
column will be null for them.
You can see how to handle picking images from Picasa correctly at this link:
http://dimitar.me/how-to-get-picasa-images-using-the-image-picker-on-android-devices-running-any-os-version/
Only you also need to handle URIs that start with "content://com.sec.android.gallery3d" (I see this on Samsung S3) so change
if (selectedImage.toString().startsWith("content://com.google.android.gallery3d"))
to
if (_selectedImage.toString().startsWith("content://com.google.android.gallery3d")
|| selectedImage.toString().startsWith("content://com.sec.android.gallery3d"))
I'm not sure if there are any more special cases (probably yes).
I ran into this same problem and tried implementing this based on the website user1682516 recommended. I was banging my head against the wall because my Picasa content URLs didn't quite match: mine looked like "com.sec.android.gallery3d.provider" and not "com.android.gallery3d.provider" but didn't seem to work whether I altered the URL or not.
Then I felt dumb when I eventually realized that the library I use to load remote images for ImageViews in my app, https://github.com/nostra13/Android-Universal-Image-Loader, takes care of this for me. I can just call ImageLoader.getInstance().loadImage() with the appropriate parameters and get a Bitmap in the callback. I don't need to worry about whether it is a local image, a remote Picasa image, or an ordinary remote image--that's taken care of for me. Wish I had figured that out hours ago!