1

시간 내 주셔서 감사합니다. 나는 갤러리를 시작하고 활동 A가 이미지를 선택하고 같은 활동으로 컴백을하는 앱을하고있다.갤러리에서 사진을 선택하면 내 Android 앱이 종료됩니다. (게시물에 버그에 대한 비디오가 있습니다.)

나는 하나의 액티비티 (이것은 런처로 정의된다. Manifest)하지만 manifest에 정의 된 Activity의 전체 proyect에서 기본값으로 수행하면 제대로 작동하지 않습니다.

나는 갤러리를 열고 사진을 선택하는 데 사용할 목적 :

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); 
} 

나는 (I 구멍 프로젝트에서 실행될 때 호출되지 않은) 데이터를 얻는 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); 
    } 
} 

이것은 로그 캣 덤프입니다 :

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 

완료하려면, 나는 에뮬레이터의 동작을 기록 먼저 전체 프로젝트 (앱 종료)와 두 번째로 잘 작동하는 분리 된 프로젝트에서 가져옵니다.

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

고마워요!

+1

logcat 덤프를 공유하십시오. –

+0

안녕하세요! 거기 나는 포스트를 새롭게했다. 어떤 아이디어가 있다면 알려주세요. – eyyo

+0

getPath (selectedImageUri) 함수에 문제가있을 수 있다고 생각합니다. Uri 클래스의 함수 인 selectedImageUri.getPath()를 시도해보십시오. Uri가 유효하지 않으면 null을 반환합니다. –

답변

0

나는 다음 코드를 사용하여 이미지를 따기 위해 갤러리를 시작하는 작업 코드가 있습니다

static final int GALLERY_RESULT = 1; 

Intent j = new Intent(Intent.ACTION_PICK, Images.Media.EXTERNAL_CONTENT_URI); 
j.setType("image/*"); 
startActivityForResult(j, GALLERY_RESULT); 

을 다음과 같이 나는 결과를 처리 :

protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    super.onActivityResult(requestCode, resultCode, intent); 
    if (resultCode == RESULT_OK) { 
     switch (requestCode) { 
      case GALLERY_RESULT: 
       Uri imgUri = intent.getData(); 
       imgView.setImageURI(imgUri); 
      break; 
     } 
    } 
} 
+0

코드를 사용하여 의도 구조가 변경되었지만 여전히 프로젝트에서 작동하지 않습니다. 갤러리를 열면 사진을 선택하고 활동이 다시 시작될 때 앱을 종료합니다. – eyyo

+0

LogCat에서 5 ~ 10 개의 빨간색 줄이 그려집니다. 여기에 붙여 넣으십시오. 그들은 오류의 원인을 알려줍니다. 이전에 붙여 넣은 logcat은별로 도움이되지 않았습니다. –

+0

앱의 일부가 아닌 갤러리에서 종료되므로 오류가 표시되지 않는다고 생각합니다. – eyyo

0

시도가 활동 매니페스트에 변경 :

android:noHistory="false"