2016-06-07 75 views
1

我创建了具有多个图像添加对话框的片段。每个图像可以通过相机或画廊添加。在这两种情况下,我只能添加一个图像 - 解散图库/相机视图应用程序后停止响应。 这就是我创造的摄像头和画廊挑选意图:Android应用程序在次要操作后没有响应ACTION_PICKT意图

//permissions request in other methods 
private void pickImage() { 
    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
    photoPickerIntent.setType("image/*"); 
    startActivityForResult(photoPickerIntent, SELECT_GALLERY); 
} 

private void openCamera() { 
    if (PermissionsHelper.checkStoragePermissions(ReportFragment.this)) { 
     Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     Uri fileUri = getOutputMediaFileUri(); 
     fileFromCamera = fileUri.getPath(); 
     takePicture.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 
     startActivityForResult(takePicture, SELECT_PHOTO); 
    } else { 
     PermissionsHelper.requestStoragePermissions(this, CAMERA_STORAGE_PERMISSION_REQUEST); 
    } 
} 

下面是结果如何被处理:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode != Activity.RESULT_OK) { 
     return; 
    } 
    if (requestCode == SELECT_GALLERY) { 
     Uri selectedImageAddress = data.getData(); 
     addPathsIfUnique(getRealPathFromURI(selectedImageAddress)); 
    } 
    if (requestCode == SELECT_PHOTO) { 
     if (PermissionsHelper.checkStoragePermissions(this)) { 
      if(fileFromCamera != null) { 
       addPathsIfUnique(fileFromCamera); 
      } 
     } else { 
      PermissionsHelper.requestStoragePermissions(this, CAMERA_STORAGE_PERMISSION_REQUEST); 
     } 
    } 
} 

private void addPathsIfUnique(String path) { 
    if(path == null) 
     return; 
    for(String currentPath : photoPaths) { 
     if(currentPath.equals(path)) { 
      return; 
     } 
    } 
    photoPaths.add(path); 
    shopChanged(point); 
} 

在shopChanged功能我重新创建ListView的细胞。我也试图完全删除ListView,将其替换为片段中的单个按钮,但结果相同:在第二次打开画廊或相机关闭后,应用程序不再响应。即使OnResume断点没有被触发。但第一次开幕后,所有作品都很好。 这种行为的原因是什么?

+0

你的'onRequestPermissionsResult'看起来像什么?我猜你在某处有一个无限循环。 – chessdork

+0

看起来像这样:http://pastebin.com/eY9QjBM5但是,在授予所有权限后,错误仍然存​​在。现在我评论了这种方法,并且应用程序即使在第一个库开放之后也不负责任:)现在我必须创建新的空项目并逐步复制现有代码以找到原因 – wingear

+0

如果是,请解决此问题给我解决方案I我也面临这个问题 –

回答

0

找到了解决方案:这是新的Google Play服务错误 - 问题在降级到8.4.0后修复。将搜索他们bugtracker并提交bug,如果它不是已经提交

相关问题