Прежде всего позвольте мне сказать, что этот вопрос слегка связан с другим вопросом мной.На самом деле он был создан из-за этого.
У меня есть следующий код для записи загруженного из сети растрового изображения в файл на 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 зрителя.Просмотрщик изображений Astro, медиа-галерея по умолчанию (у меня есть milstone на 2.1, но на вехе обновление 2.1 не включало 3d-галерею, так что она старая) и 3d-галерею от Nexus (я нашел apk вwild).
Теперь, когда я запускаю 3 программы просмотра, происходит следующее:
Программа просмотра изображений Astro: Активность запускается, но я не вижу ничего, кромечерный экран.
Галерея мультимедиа: Появляется диалоговое окно исключения: «Приложение Галерея мультимедиа (процесс com.motorola.gallery) неожиданно остановилось. Пожалуйста, попробуйтеснова "с опцией принудительного закрытия.
3D галерея: Все работает как надо.
Когда я пытаюсьчтобы просто открыть файл с помощью файлового менеджера Astro (перейдите к нему и просто нажмите), я получаю тот же диалог параметров, но на этот раз все по-другому:
Просмотрщик изображений Astro: Все работает как надо.
Медиа-галерея: Все работает как надо.
3D-галерея: Действие запускается, но я не вижу ничего, кромечерный экран.
Как видите, все в полном беспорядке.Я понятия не имею, почему это происходит, но так происходит каждый раз.Это не случайная ошибка.
Я что-то упускаю, когда создаю намерение?Или когда я создаю файл изображения?Любые идеи?
РЕДАКТИРОВАТЬ: Как отмечается в комментарии, это часть интереса в adb logcat.Также я должен отметить, что я изменил способ создания файла изображения.Поскольку я хочу создать файл, который отображает сетевой файл, я просто загружаю его вместо создания растрового изображения, а затем создаю файл (это было сделано, потому что в какой-то момент мне понадобился растровое изображение, но теперь я делаю это наоборот).проблемы сохраняются, и они абсолютно одинаковы:
I / ActivityManager (18852): начало деятельности: Intent {act = android.intent.action.VIEW dat = / sdcard / Android / data / com.myapp / files / image.jpg typ = image / * flg = 0x3800000 cmp = com.motorola.gallery / .ViewImage}
I / ActivityManager (18852): запустить процесс com.motorola.gallery:ViewImage длядеятельность com.motorola.gallery/.ViewImage: pid = 29187 uid = 10017 gids = {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): Просмотр изображения при создании!
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.ActivityThread.access $ 2200 (ActivityThread.java:119)
E / AndroidRuntime (29187): в
android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1863)
E / AndroidRuntime (29187): в
android.os.Handler.dispatchMessage (Handler.java:99)
E / AndroidRuntime (29187): в
android.os.Looper.loop (Looper.java:123)
E / AndroidRuntime (29187): в
android.app.ActivityThread.main (ActivityThread.java:4363)
E / AndroidRuntime (29187): в
java.lang.reflect.Method.invokeNative (Native
Метод)
E / AndroidRuntime (29187): в
java.lang.reflect.Method.invoke (Method.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 (Native
Метод)
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 (Instrumentation.java:1047)
E / AndroidRuntime (29187): в
android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2459)
E / AndroidRuntime (29187): ... еще 11