Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android上最近捕获的文件事件拦截_Java_Android_Android Intent_Android Activity_Android Camera - Fatal编程技术网

Java Android上最近捕获的文件事件拦截

Java Android上最近捕获的文件事件拦截,java,android,android-intent,android-activity,android-camera,Java,Android,Android Intent,Android Activity,Android Camera,我想做的就是简单地添加带有最近捕获的文件名的日志行。不幸的是,由于下面指出的错误,应用程序失败。下面提供的堆栈中的代码和错误 提前感谢, 阿纳尔 java.lang.RuntimeException:传递结果失败 ResultInfo{who=null,request=100,result=-1,data=null}到活动 {az.justx.justx/az.justx.justx.MainActivity}: java.lang.NullPointerException:尝试调用虚拟方法 空

我想做的就是简单地添加带有最近捕获的文件名的日志行。不幸的是,由于下面指出的错误,应用程序失败。下面提供的堆栈中的代码和错误

提前感谢,

阿纳尔

java.lang.RuntimeException:传递结果失败 ResultInfo{who=null,request=100,result=-1,data=null}到活动 {az.justx.justx/az.justx.justx.MainActivity}: java.lang.NullPointerException:尝试调用虚拟方法 空对象上的“android.net.Uri android.content.Intent.getData()” 参考文献

private void interceptCameraButtonClick(){
按钮cameraButton=(按钮)findViewById(R.id.cam);
cameraButton.setOnClickListener(
新建视图。OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent imageIntent=新的Intent(MediaStore.ACTION\u IMAGE\u CAPTURE);
File imagesFolder=新文件(Environment.getExternalStorageDirectory(),“MyImages”);

imagesFolder.mkdirs();//不要求相机将
Intent
中的
Uri
发送回
onActivityResult()
。您已经知道
Uri
是什么,因为您将它放在了
额外输出中。
您只需要使用该值。请确保将其包含在已保存的实例状态中,因为当摄像头应用程序在前台时,您的进程可能会终止。

您在传递Uri的同时创建了intent,因此无法在数据中获取它。getData().您必须直接使用该URI。
private void interceptCameraButtonClick() {

    Button cameraButton = (Button) findViewById(R.id.cam);

    cameraButton.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
                    imagesFolder.mkdirs(); // <----
                    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
                    File image = new File(imagesFolder, "AD_" + timeStamp + ".jpg");
                    Uri uriSavedImage = Uri.fromFile(image);
                    imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
                    startActivityForResult(imageIntent, 100);
                }
            }
    );

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    Log.i("Test", Integer.toString(resultCode));

    if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            // Image captured and saved to fileUri specified in the Intent
            Log.i("CALLED", "Image saved to:\n" +
                    data.getData());
            Toast.makeText(this, "Image saved to:\n" +
                    data.getData(), Toast.LENGTH_LONG).show();
        } else if (resultCode == RESULT_CANCELED) {
            // User cancelled the image capture
        } else {
            // Image capture failed, advise user
        }
    }

}