I tried this. Perfect work on almost devices. But doesn't work at Samsung Galaxy 3.
On normal device i have something like content://media/external/images/media/1 in intent.getData() and after using getContentResolver() i have /mnt/sdcard/Android/data/package/.../file.jpg
But on Samsung Galaxy 3 in intent.getData() i have content://com.sec.android.gallery3d.provider/picasa/item/5624862738518543714 and https://lh5.googleusercontent.com/-22xcQIWrlT4/Tg-G29-6jWI/AAAAAAAAAJA/i_FUO3pN1Sc/I/%2525D0%252597%2525D0%2525B0_%2525D0%2525B5%2525D0%2525B4%2525D1%252583.jpg after using Resolver.
What should i do to get normal path on Samsung Galaxy 3?
UPD: i see, in gallery there is available to pick pictures from my Google+ shared pictures. Hm...
So, i think, i will show message for users in this case to pick only local files.