【问题标题】:Intent to take picture, if i press back, the application crashes打算拍照,如果我按回,应用程序崩溃
【发布时间】:2013-02-08 12:50:39
【问题描述】:

我调用这个函数:

  private void TakePhoto() {
    LogService.log(TAG, "inTakePicture");
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/BlueSkyBio/media/", "test.jpg");

    outputFileUri = Uri.fromFile(file);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
    startActivityForResult(intent, TAKE_PICTURE);

}

这会带我进入下一个 onActivityResult:

 public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == TAKE_PICTURE) {
        if(outputFileUri != null){
            LogService.log("MainFragment", outputFileUri.toString());
            String path = outputFileUri.toString();
            selectedVideoPath = path.substring(7);
            LogService.log("in take pic", "selectedImagePath: " + selectedVideoPath);
            Intent paintActivity = new Intent(getActivity(), PaintActivity.class);
            paintActivity.putExtra("selectedImagePath", selectedVideoPath);
            paintActivity.putExtra("isVideo", false);
            startActivity(paintActivity);
            ((FragmentActivity) getActivity()).finish();
        } else{
            //                Toast.makeText(getActivity(), "No picture taken", Toast.LENGTH_SHORT).show();
            Intent main = new Intent(getActivity(), FragmentActivity.class);
            startActivity(main);
            ((FragmentActivity) getActivity()).finish();
        }


    }

}

这工作正常,但是如果我调用意图拍照,然后按返回按钮,如果我之前已经拍照,它将加载该图片,如果没有,它将崩溃,因为按返回,它不会拍照。我该怎么做才能摆脱这种情况?

我尝试过测试:

  if(data != null) // instead of:  if(outputFileUri != null){

但这永远不会进入代码的“else”部分。

【问题讨论】:

    标签: android android-intent camera uri image


    【解决方案1】:

    使用这些条件:

    private static final int CAMERA_PIC_REQUEST = 1337;  
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    
        if(requestCode==CAMERA_PIC_REQUEST && resultCode == RESULT_OK){
    
             log.d("something","something");          
        }
        else if (resultCode == Activity.RESULT_CANCELED) 
        {
            log.d("something","something");
        }
    

    }

    【讨论】:

    • 10x 很多,从现在开始,我肯定也会使用 resultCode,现在看到它有多简单,我觉得很愚蠢:p
    猜你喜欢
    • 2017-02-24
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多