Sav*_*sis 6 java android bitmap android-intent
首先让我说这个问题与我的另一个问题有点联系.实际上它是因为这个而创建的.
我有以下代码将从网上下载的位图写入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);
Run Code Online (Sandbox Code Playgroud)
几点说明.在看到有人使用它之后我创建了"可变"位图,它似乎比没有它更好.我在Uri类上使用parse方法而不是fromFile,因为在我的代码中我在不同的地方调用它们,当我创建intent时我有一个字符串路径而不是文件.
现在我的问题.该文件已创建.意图启动一个对话框,要求我选择一个查看器.我安装了3个观众.Astro图像查看器,默认媒体库(我在2.1上有一个milstone,但在里程碑上2.1更新不包括3d画廊所以它是旧的)和来自nexus的3D画廊(我发现了apk中的野生).
现在,当我启动3个观众时,会发生以下情况:
Astro图像查看器:活动启动但我只看到黑屏.
媒体库:我收到一个异常对话框,显示"应用程序媒体库(进程com.motorola.gallery)已意外停止.请再次尝试使用强制关闭选项.
3D画廊:一切都按照预期运作.
当我尝试使用Astro文件管理器简单地打开文件(浏览到它并只需单击)时,我得到相同的选项对话框,但这次情况有所不同:
Astro图像查看器:一切都按预期工作.
媒体库:一切都按预期工作.
3D画廊:活动启动但我只看到黑屏.
你可以看到一切都是一团糟.我不知道为什么会这样,但每次都会发生这种情况.这不是一个随机的错误.
我在创建意图时是否遗漏了什么?或者当我创建图像文件?有任何想法吗?
编辑:正如评论中所述,这是对adb logcat感兴趣的部分.另外我应该注意到我改变了我创建图像文件的方式.因为我想创建一个反映在线文件的文件,我只需下载它而不是创建一个Bitmap然后创建文件(这样做是因为在某些时候我需要Bitmap但现在我反过来做).问题持续存在,并且完全相同:
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):启动proc com.motorola.gallery:ViewImage for activity 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):在查看图像onCreate!
D/AndroidRuntime(29187):关闭VM
W/dalvikvm(29187):threadid = 3:线程退出,未捕获异常(组= 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):at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(29187):at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(29187):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime(29187):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime(29187):at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(29187):引起:java.lang.NullPointerException
E/AndroidRuntime(29187):at com.motorola.gallery.ImageManager.allImages(ImageManager.java:5621)
E/AndroidRuntime(29187):at com.motorola.gallery.ImageManager.getSingleImageListByUri(ImageManager.java:5515)
E/AndroidRuntime(29187):at 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个
Vla*_*lad 34
我用这个hack来修复错误:
...
Uri hacked_uri = Uri.parse("file://" + uri.getPath());
intent.setDataAndType(hacked_uri, "image/*");
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19255 次 |
| 最近记录: |