默认相机活动未完成按OK按钮

Rah*_*aki 19 camera android nexus-s

我从我的活动中调用默认摄像头,然后处理onActivityResult.我的代码似乎在LG Ally上工作正常,在拍摄照片时没有确认.但是,当我在Nexus S上运行相同的应用程序时,它会在返回我的活动之前提示我"Ok","Retake"或"Cancel".虽然"取消"有效,但在没有保存图片的情况下返回我的活动,"确定"似乎没有任何效果,甚至没有返回我的活动.

我的代码如下:

private void captureImage() {

    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        File path = new File(Environment.getExternalStorageDirectory().getPath() + "/Images/" + (new UserContextAdapter(this)).getUser() + "/");
        path.mkdirs();
        File file = new File(path, "Image_Story_" + mRowId.toString() + ".jpg");

        newImageUri = Uri.fromFile(file);

        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, newImageUri);

        startActivityForResult(intent, CAPTURE_IMAGE);
    }

}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {

    switch (requestCode) {
    case CAPTURE_IMAGE:
        switch (resultCode ) {
        case 0:
            Log.i("CAPTURE", "Cancelled by User");
            break;
        case -1:
            mImageUri = newImageUri;
            setImageFromUri();
            }
    }
Run Code Online (Sandbox Code Playgroud)

qed*_*avu 15

我想我刚才遇到了同样的问题.

如果保存图片的路径不正确,相机将不会返回您的应用程序.一旦我确定目录存在,一切正常.确保目录存在,然后它应该工作.

- 编辑 -

我刚刚看到你打电话path.mkdirs();但我认为它不起作用.正如你可以在android文档中看到的那样"请注意,此方法在失败时不会抛出IOException.调用者必须检查返回值." 请务必检查目录是否确实存在.

心连心

  • 嗨Rahul,实际上我检查文件夹的存在,它确实存在,并且图片存储在那里,但仍然OK按钮不会让我回到我的活动.那么,@ qedejavu所写的内容似乎并不是解决方案.你能回忆起你是如何解决这个问题的吗? (2认同)
  • 当本机Camera应用程序无法访问您尝试将其保存到的目录时,也会发生这种情况.例如,原生相机应用无法访问您应用的私有存储空间. (2认同)