Android - 相机OK按钮无效 - Android 6.0

时间:2017-05-10 06:42:43

标签: java android camera

我面临一个非常奇怪的问题。单击相机活动中的图片后,将显示一个确认页面,其中包含三个选项(图标) - 确定,重新拍摄和取消。 重新启动和取消按钮工作正常,但在单击确定按钮后 - 没有任何反应。它不会返回到我的活动。我看过类似的帖子,但没有一个对我有用。我已经给了所有读写和相机的许可。下面是我在处理这个问题时所做的一些观察。

  

1.On Android 5.0.1 - LENEVO YOGA TAB 3 ,相同代码,确定按钮正常工作。

     

2.On Android 6.0 - LENEVO YOGA TAB 3 ,相同代码,确定按钮无法正常工作(权限添加了读取,写入和相机)。

     

3.在 Android 6.0 - LeEco 2 ,相同代码,没有确定按钮,因此在捕获后返回活动 - 正常工作(权限添加了读取,写入和相机)。

我打开相机活动的方式

public final static String PRE_CAMERA_FILE_NAME = "my_image";

public final static String FILE_DIRECTORY =
        (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) ?
                Environment.getExternalStorageDirectory().getAbsolutePath() :
                Environment.getDataDirectory()) + File.separator + "Images";

private void openCamera() {
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    File mCameraFile = new File(FILE_DIRECTORY,   String.valueOf(PRE_CAMERA_FILE_NAME + System.currentTimeMillis()) + ".jpg");
    if(!mCameraFile.exists()){
        mCameraFile.mkdirs();
    }
    System.out.println("Path:=" + mCameraFile.getAbsolutePath());
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
        mCameraFileUri = FileProvider.getUriForFile(getContext(),
                BuildConfig.APPLICATION_ID + ".provider", mCameraFile);
    } else {
        mCameraFileUri = Uri.fromFile(mCameraFile);
    }
    cameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mCameraFileUri);
    cameraIntent.putExtra("return-data", true);
    getActivity().startActivityForResult(cameraIntent, REQUEST_TYPE_CAMERA);
}

OnActivityResult:

 public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (mOnFileChooseListener != null && resultCode == Activity.RESULT_OK) {
        String path = "";
        if (requestCode == REQUEST_TYPE_CAMERA) {
            path = mCameraFileUri.getPath();
        } else if (requestCode == REQUEST_TYPE_UPLOAD_PDF_OR_PHOTO && data != null) {
            path = FileUtils.getFilePath(getContext(), data.getData());
        }
        mOnFileChooseListener.onFileSelected(path);
    }
}

已添加权限。

[enter image description here]

任何人都可以回答为什么会这样吗?提前致谢。

1 个答案:

答案 0 :(得分:1)

我有同样的问题。 就我而言,保存路径不正确。我在sameFile.mkdirs()上更改了sameFile.getParentFile().mkdirs()。 在您的情况下mCameraFile.mkdirs()使用文件名创建目录。 我的工作代码

File file = new File(getContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES)
        + File.separator
        + screenState.catalogKey,
        idImg.toString());
if (file.getParentFile().exists() || file.getParentFile().mkdirs()) {
    mOutputFileUri = Uri.fromFile(file);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, mOutputFileUri);
    startActivityForResult(intent, ConstantManager.I_CAMERA_RESULT);
}