2016-06-30 7 views
-2

현재 내 앱의 사용자 프로필을 만들고 있습니다. 최근까지, 나는 아래 코드에 어떤 문제도주지 않은 Samsung Galaxy Note 4를 테스트 해왔다. 그러나 나중에 테스트 할 때 Nexus 5x를 사용하고 있는데 아래 코드를 사용하여 사용자 프로필 이미지를 선택하면 '불행히도 사진이 중지되었습니다.'라는 오류가 표시됩니다. 사진을 디버깅 할 수 없어서 오류 로그가 없습니다.사진을 찍고 자르기 기능을 사용할 때 "불행히도 사진이 정지되었습니다"

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch(requestCode) { 
     case 0: 
      if(resultCode == RESULT_OK){ 
       Uri selectedImage = data.getData(); 
       cropImage(selectedImage); 
      } 

      break; 
     case 1: 
      if(resultCode == RESULT_OK){ 
       Uri selectedImage = data.getData(); 
       cropImage(selectedImage); 
      } 
      break; 
     case 2: 
      if(resultCode == RESULT_OK){ 
       Uri selectedImage = data.getData(); 
       profileImage.setImageURI(selectedImage); 
       try { 
        userProfileImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage); 
        AlmightyFunctions.ImageService.saveProfileImage(user,userProfileImage); 
       } 
       catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
      break; 
    } 
} 

public void showImageSelectDialog() { 
    CharSequence options[] = new CharSequence[] { 
      getString(R.string.select_camera), 
      getString(R.string.select_gallery) 
    }; 

    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle(getString(R.string.select_image_dialog)); 
    builder.setItems(options, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      MarshMallowPermission mmp = new MarshMallowPermission(UserProfileActivity.this); 
      switch(which) { 
       case 0: 
        if (!mmp.checkPermissionForCamera()) { 
         mmp.requestPermissionForCamera(); 
        } 
        Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
        startActivityForResult(takePicture, 0); 
        break; 
       case 1: 
        if (!mmp.checkPermissionForExternalStorage()) { 
         mmp.requestPermissionForExternalStorage(); 
        } 
        Intent pickPhoto = new Intent(Intent.ACTION_PICK, 
          android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
        startActivityForResult(pickPhoto, 1); 
        break; 
      } 
     } 
    }); 
    builder.show(); 
} 

public void cropImage(Uri photoUri) { 
    Intent intent = new Intent("com.android.camera.action.CROP"); 
    intent.setDataAndType(photoUri, "image/*"); // this will open all images in the Gallery 
    intent.putExtra("crop", "true"); 
    intent.putExtra("aspectX", 1); // this defines the aspect ration 
    intent.putExtra("aspectY", 1); 
    intent.putExtra("return-data", true); // true to return a Bitmap, false to directly save the cropped iamge 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); //save output image in uri 
    startActivityForResult(intent,2); 
} 

모든 도움을 주시면 감사하겠습니다.

답변