Я делаю это:
startActivityForResult(new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), 1);
тогда на onActivityResult я ВСЕГДА получаю RESULT_CANCELED. На самом деле, я думаю, что onActivityResult запускается после открытия фотогалереи, даже до того, как изображение было выбрано!
Поскольку я не вижу ничего плохого в самом коде, возможно, я что-то упустил из файла AndroidManifest.xml, связанного с новым Intent?