2013-01-09 102 views
7

我的应用程序做什么?该应用正在从照片库中选择一张照片。为什么应用程序突然关闭而没有显示任何错误?

我的问题是什么?一旦我从图库中选择照片,它就会无错地关闭。

我做了什么?我增加了设备的内存,它没有功能。我从项目中拿出来,活动正常,它回到了活动中。

主要问题是什么?它不能在proyect上运行,我不能说明原因。

你很想看看发生了什么吗?这是一段视频。首先当它关闭时,第二次当我从另一个项目中完成并且正常工作时。

http://www.youtube.com/watch?v=SntnyKiJQ1Q&feature=youtu.be


编辑

我的问题是,一旦我选择从画廊的图片有堆栈上的任何活动。

为什么?

的问题是在清单的机器人:noHistory =“真”标签,因为没有历史的画廊找不到任何活动,并将其关闭的应用程序。


代码:

我用开画廊和选择照片的意图:

public void openGallery(int req_code){ 

    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent,"Select file to upload "), req_code); 
} 

在那里我得到它从来没有所谓的,因为它关闭了数据的onActivityResult:

public void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (resultCode == RESULT_OK) { 
     Uri selectedImageUri = data.getData(); 
     if (requestCode == SELECT_FILE1) 
     { 
      selectedPath1 = getPath(selectedImageUri); 
      System.out.println("selectedPath1 : " + selectedPath1); 
     } 
     if (requestCode == SELECT_FILE2) 
     { 
      selectedPath2 = getPath(selectedImageUri); 
      System.out.println("selectedPath2 : " + selectedPath2); 
     } 
     tv.setText("Selected File paths : " + selectedPath1 + "," + selectedPath2); 
    } 
} 

的logcat的:

01-05 15:18:14.569: I/ActivityManager(59): Starting activity: Intent { act=android.intent.action.UPLOADIMAGEDEMO cmp=com.example/.UploadImageDemo } 
01-05 15:18:15.779: D/dalvikvm(2496): GC_EXTERNAL_ALLOC freed 2697 objects/189152 bytes in 92ms 
01-05 15:18:16.599: I/ActivityManager(59): Displayed activity com.example/.UploadImageDemo: 1953 ms (total 1953 ms) 
01-05 15:18:21.899: D/dalvikvm(279): GC_EXPLICIT freed 871 objects/134112 bytes in 217ms 
01-05 15:18:26.620: I/ActivityManager(59): Starting activity: Intent { act=android.intent.action.CHOOSER cmp=android/com.android.internal.app.ChooserActivity (has extras) } 
01-05 15:18:28.250: I/ActivityManager(59): Starting activity: Intent { act=android.intent.action.GET_CONTENT typ=image/* flg=0x3000000 cmp=com.android.gallery/com.android.camera.ImageGallery } 
01-05 15:18:28.670: D/dalvikvm(279): GC_EXTERNAL_ALLOC freed 388 objects/53352 bytes in 60ms 
01-05 15:18:28.850: D/dalvikvm(279): GC_EXTERNAL_ALLOC freed 326 objects/90664 bytes in 53ms 
01-05 15:18:29.200: I/ActivityManager(59): Displayed activity com.android.gallery/com.android.camera.ImageGallery: 873 ms (total 2345 ms) 
01-05 15:18:29.420: D/dalvikvm(279): GC_EXTERNAL_ALLOC freed 725 objects/106960 bytes in 140ms 
01-05 15:18:30.430: W/InputManagerService(59): Starting input on non-focused client   [email protected] (uid=10002 pid=279) 
01-05 15:18:32.010: D/dalvikvm(112): GC_FOR_MALLOC freed 9994 objects/476368 bytes in 149ms 

我希望社区能帮助我!

+0

+1视频!你是否也尝试过使用真实设备? –

+1

这不是logcat输出的正确部分。从IDE运行你的应用程序直到它崩溃,然后搜索logcat“超出预算”。如果您找到它,请张贴相关部分。哦,并为视频+ 1太... – Simon

+0

克里斯我试着从一个真实的设备,它保持发生。西蒙,我找到了原因并在下面发布。谢谢你们的帮助。 – eyyo

回答

4

玉家伙,首先非常感谢你对你的答案,他们帮助我今天继续下去..

的问题是在清单的机器人:noHistory =“真”标签,因为有没有历史画廊找不到任何活动,它关闭了应用程序。

再次,谢谢大家。

0

通常情况下,Android应用程序会崩溃,如果我们试图加载图片作为位图/可绘制巨大的大小(取决于由os分配的堆内存);例如:1mb大小的图像或更多。

尝试加载小尺寸的图像,并检查问题是否存在。 正常情况下,崩溃发生在与BitmapFactory *相关的​​代码上。

Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), 
     R.drawable.android); 
+0

谢谢你的帮助,我发现了我的问题的实际答案。 – eyyo

0

很难说究竟是什么错误导致跟踪不包含任何异常消息。但是,我可以分享一段代码:

推出意图

private final int GALLERY_REQUEST = 0; 

private void runGallery() { 
    Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    startActivityForResult(intent, GALLERY_REQUEST); 
} 

处理结果

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     Uri selectedPictureUri = data.getData(); 
     loadGalleryAttachment(selectedPictureUri); 
    } 
} 

private void loadGalleryAttachment(Uri uri){ 
    if (uri != null) { 
     String path = getPath(uri); 
     File f = new File(path); 
     // do something with picture file 
    } 
} 

public String getPath(Uri uri) { 
    String[] projection = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(uri, projection, null, null, null); 
    if (cursor != null) { 
     int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
     cursor.moveToFirst(); 
     return cursor.getString(column_index); 
    } 
} 

希望它会帮助你的!

+0

维亚切斯拉夫谢谢你的帮助我找到了我的问题的答案。 – eyyo

1

//对不起,没有足够的信誉评论接受的答案,但我想我的情况下,将有利于其他有同样问题

我有完全相同的保存问题其他开发人员编写的代码和挣扎了几天。但清单中没有android:noHistory属性,但活动是使用FLAG_ACTIVITY_NO_HISTORY标志启动的。

像这样:

intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 

我GOOGLE了好几个小时,达到这太问题的两倍,但发现只有当决定寻找我的整个项目词“历史”的答案。

相关问题