Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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
Android 意图问题_Android - Fatal编程技术网

Android 意图问题

Android 意图问题,android,Android,我有一个类可以访问本机相机来拍照。拍摄完照片后,照片将保存在文件夹中,并显示在新活动中 问题是,在拍摄完照片后,我试图获取输入到intent中的数据,但它总是说intent是null.pointer.exception。下面是我的班级,任何人请帮助我 import java.io.File; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.B

我有一个类可以访问本机相机来拍照。拍摄完照片后,照片将保存在文件夹中,并显示在新活动中

问题是,在拍摄完照片后,我试图获取输入到intent中的数据,但它总是说intent是
null.pointer.exception
。下面是我的班级,任何人请帮助我

import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

 public class CameraTestActivity extends Activity {
Button start;
final int TAKE_PICTURE = 2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    start = (Button)findViewById(R.id.startButton);

    start.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            File file = new File(Environment.getExternalStorageDirectory().toString() + "/testImage/" + "toBeUpload.jpg");
            Uri imageUri = Uri.fromFile(file);


            Intent cameraIntent = new Intent("android.media.action.IMAGE_CAPTURE");
            cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
            cameraIntent.putExtra("path", imageUri.toString());
            startActivityForResult(cameraIntent,TAKE_PICTURE);

        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
    super.onActivityResult(requestCode, resultCode, intent);
    if(resultCode == RESULT_OK)
    {
        if(requestCode == TAKE_PICTURE)
        {
            /*ERRROR OCCUR HERE*/
            Bundle extras = intent.getExtras();
        }
    }
}
}

我想知道对super.onActivityResult的调用是否正在使用Intent实例,并在完成后将其设置为null。您不需要调用super类,因为您自己正在实现它,所以请尝试一下。

调用
super.onActivityResult(requestCode、resultCode、intent)在您处理事件之后。

Rich和userSeven7s是正确的,但在您的特定情况下,这不是重点:您实际上不需要照片选择器的意图返回数据(例外:一些有缺陷的非常旧的手机只在附加功能中写入缩略图,实际上并没有将图像写入您指定的路径,但这是另一回事)——只需查找写入您最初传递意图的URI的图像即可。

尝试:

startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
参考:

检查logcat,他们会给出错误行的详细信息,并尝试解决问题……。检查意图为空??可能重复我尝试过不调用super.onActivityResult,但意图为空。可以稍微了解一下您的最后一句话“只需查找写入您最初传递意图的URI的图像。”对不起,我的英语不是很好。你写了这行:
cameraIntent.putExtra(MediaStore.EXTRA\u输出,imageUri)
在那里可以找到完整大小的图像。你是说我直接访问Uri,但没有从意图中获取Uri?这可能会起作用,但我仍然不知道意图为空的原因。意图为空还是额外数据为空?如果只是额外数据,请参阅(哪个Lukas标记为重复)。意图为空,而不是额外的数据。您使用的请求代码纯粹用于内部引用(因此您可以准确地消除您启动的活动返回结果的歧义)。使用不同的值不会更改实际返回的意图,只会更改它返回的请求代码。