Запуск Намерения. Намерение ACTION_VIEW, не работающее над сохраненным файлом изображения

В первую очередь, позвольте мне сказать, что это подвергает сомнению, немного подключен к другому вопросу мной. На самом деле это было создано из-за этого.

У меня есть следующий код для записи битового массива, загруженного от сети до файла в SD-карте:

// Get image from url
URL u = new URL(url);
HttpGet httpRequest = new HttpGet(u.toURI());
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
InputStream instream = bufHttpEntity.getContent();
Bitmap bmImg = BitmapFactory.decodeStream(instream);
instream.close();

// Write image to a file in sd card
File posterFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Android/data/com.myapp/files/image.jpg");
posterFile.createNewFile();
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(posterFile));
Bitmap mutable = Bitmap.createScaledBitmap(bmImg,bmImg.getWidth(),bmImg.getHeight(),true);
mutable.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();

// Launch default viewer for the file
Intent intent = new Intent();                   
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(posterFile.getAbsolutePath()),"image/*");
((Activity) getContext()).startActivity(intent);

Несколько примечаний. Я создаю "изменяемый" битовый массив после наблюдения кого-то использующего его, и это, кажется, работает лучше, чем без него. И я использую метод синтаксического анализа на классе Uri а не fromFile, потому что в моем коде я называю их в различных местах и когда я создаю намерение, у меня есть строковый путь вместо файла.

Теперь для моей проблемы. Файл создается. Намерение запускает диалоговое окно, прося, чтобы я выбрал средство просмотра. У меня есть 3 установленные средства просмотра. Космическая программа просмотра изображений, медиа-галерея по умолчанию (у меня есть жернов на 2,1, но на этапе эти 2,1 обновления не включали 3-ю галерею, таким образом, это - старое), и 3-я галерея от связи одна (я нашел apk в дикой природе).

Теперь, когда я запускаю эти 3 средства просмотра, следующее происходит:

  • Космическая программа просмотра изображений: действие запускается, но я вижу только черный экран.

  • Медиа-галерея: я добираюсь, диалоговое окно исключения, показанное "Приложение Медиа-галерея (обработайте com.motorola.gallery), неожиданно остановился. Попробуйте еще раз" с силой близкую опцию.

  • 3D галерея: Все работает, как это должно.

Когда я пытаюсь просто открыть файл с помощью Космического файлового менеджера (обзор к нему, и просто нажимать) я получаю то же диалоговое окно опции, но на этот раз вещи отличаются:

  • Космическая программа просмотра изображений: Все работает, как это должно.

  • Медиа-галерея: Все работает, как это должно.

  • 3D галерея: действие запускается, но я вижу только черный экран.

Поскольку Вы видите, что все - полная путаница. Я понятия не имею, почему это происходит, но это происходит как этот каждый раз. Это не случайная ошибка.

Я пропускаю что-то, когда я создаю намерение? Или когда я создаю файл изображения? Какие-либо идеи?

Править: Как отмечено в комментарии вот часть интереса к adb logcat. Также я должен отметить, что изменил способ, которым я создаю файл изображения. Так как я хочу создать файл, который отражает файл онлайн, я просто загружаю его вместо того, чтобы создать Битовый массив и затем создать файл (это было сделано, потому что в какой-то момент мне был нужен Битовый массив, но теперь я делаю это наоборот). проблемы сохраняют мысль и являются точно тем же:

I/ActivityManager (18852): Стартовое действие: Намерение {act=android.intent.action. ПРОСМОТРИТЕ dat=/sdcard/Android/data/com.myapp/files/image.jpg typ=image /* flg=0x3800000 cmp=com.motorola.gallery/.ViewImage}

I/ActivityManager (18852): Запустите proc com.motorola.gallery:ViewImage для действия com.motorola.gallery/.ViewImage: pid=29187 uid=10017 ценурозы = {3003, 1015}

I/dalvikvm (29187): поток Отладчика, не активный, игнорируя DDM, отправляет (t=0x41504e4d l=38)

I/dalvikvm (29187): поток Отладчика, не активный, игнорируя DDM, отправляет (t=0x41504e4d l=64)

I/ActivityManager (18852): com.handcent.nextsms Процесса (pid 29174) умер.

I/ViewImage (29187): В поле зрения Изображение onCreate!

D/AndroidRuntime (29187): Закрывающийся VM

W/dalvikvm (29187): threadid=3: поток, выходящий с неперехваченным исключением (group=0x4001b170)

E/AndroidRuntime (29187): Непойманный обработчик: распараллельте основной выход из-за неперехваченного исключения

E/AndroidRuntime (29187): java.lang. RuntimeException: Не мог запустить действие ComponentInfo {com.motorola.gallery/com.motorola.gallery. ViewImage}: java.lang. NullPointerException

E/AndroidRuntime (29187): в android.app. ActivityThread.performLaunchActivity(ActivityThread.java:2496)

E/AndroidRuntime (29187): в android.app. ActivityThread.handleLaunchActivity(ActivityThread.java:2512)

E/AndroidRuntime (29187): в android.app. 2 200 ActivityThread.access$ (ActivityThread.java:119)

E/AndroidRuntime (29187): в android.app. ActivityThread$H.handleMessage (ActivityThread.java:1863)

E/AndroidRuntime (29187): в android.os. Handler.dispatchMessage (Обработчик java:99)

E/AndroidRuntime (29187): в android.os. Looper.loop (Выполняющий мертвую петлю летчик java:123)

E/AndroidRuntime (29187): в android.app. ActivityThread.main(ActivityThread.java:4363)

E/AndroidRuntime (29187): в java.lang.reflect. Method.invokeNative (Собственный метод)

E/AndroidRuntime (29187): в java.lang.reflect. Method.invoke (Метод java:521)

E/AndroidRuntime (29187): в com.android.internal.os. ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:860)

E/AndroidRuntime (29187): в com.android.internal.os. ZygoteInit.main(ZygoteInit.java:618)

E/AndroidRuntime (29187): в dalvik.system. NativeStart.main (Собственный метод)

E/AndroidRuntime (29187): Вызванный: java.lang. NullPointerException

E/AndroidRuntime (29187): в com.motorola.gallery. ImageManager.allImages(ImageManager.java:5621)

E/AndroidRuntime (29187): в com.motorola.gallery. ImageManager.getSingleImageListByUri(ImageManager.java:5515)

E/AndroidRuntime (29187): в com.motorola.gallery. ViewImage.onCreate(ViewImage.java:1801)

E/AndroidRuntime (29187): в android.app. Instrumentation.callActivityOnCreate (Инструментарий java:1047)

E/AndroidRuntime (29187): в android.app. ActivityThread.performLaunchActivity(ActivityThread.java:2459)

E/AndroidRuntime (29187):... еще 11

6
задан Community 23 May 2017 в 12:17
поделиться

2 ответа

Я решил создать свое собственное Activity, которое просто рисует изображение на экране. Это не идеальное решение, но оно соответствует моим основным стандартам ... Работает :)

2
ответ дан 8 December 2019 в 02:19
поделиться

Я использовал этот код для своего приложения и работает нормально. Я сделал только смену лита.

Я изменил это:

intent.setDataAndType(Uri.parse(posterFile.getAbsolutePath()),"image/*");

Для этого:

intent.setDataAndType(Uri.fromFile(posterFile),"image/*");
4
ответ дан 8 December 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: