В моем приложении есть код, который хорошо работает для открытия галереи (из моего приложения), выбора фотографии и загрузки ее.
Я предпринял честную попытку интегрировать обработку намерений с прикрепленными EXTRA_STREAM, например, сгенерированными кнопкой "поделиться" в галерее.
Это работает на моем Droid X и работает на эмуляторе.
Сегодня я получил сообщение об ошибке от пользователя; курсор, который я использовал, чтобы вытащить фотографию из MediaStore, вернул null, когда я попросил его вернуть мне ресурс, указанный в параметре EXTRA_STREAM. Код уже прошел через тот момент, когда он проверил, что к Intent был прикреплен EXTRA_STREAM, и пользователь сказал мне, что они используют опцию «поделиться» из галереи.
Их устройство было:
Версия ОС: 2.3.3 (10 / GRI40)
Устройство: HTC PG86100
Что дает?
Почему галерея HTC отправляет мне Намерение с EXTRA_STREAM, к которому я не могу получить доступ?
Существуют ли другие причины, по которым курсор возвращает ноль?
String[] filePathColumn = {MediaColumns.DATA};
Uri selectedImageUri;
//Selected image returned from another activity
if(fromData){
selectedImageUri = imageReturnedIntent.getData();
} else {
//Selected image returned from SEND intent
// This is the case that I'm having a problem with.
// fromData is set in the code that calls this;
// false if we've been called from an Intent that has an
// EXTRA_STREAM
selectedImageUri = (Uri)getIntent().getExtras().get(Intent.EXTRA_STREAM);
}
Cursor cursor = getContentResolver().query(selectedImageUri, filePathColumn, null, null, null);
cursor.moveToFirst(); // <-- NPE on this line