onActivityResult返回null Intent

时间:2017-07-15 05:41:54

标签: android android-image-capture

我正试图从相机中捕捉图像。但它返回null Intent onActivityResult。 这是我的代码

CaptureImageFromCamera.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, 7);
    }
});

onActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 7 && resultCode == RESULT_OK) {
        try {
            if(data.getData() == null) {
                bitmap = (Bitmap)data.getExtras().get("data");
            } else {
                bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData());
            }

            ImageViewHolder.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

我是Android新手所以请详细解释答案。 在此先感谢..!

4 个答案:

答案 0 :(得分:1)

通过传递意图来开始你的工作:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     Uri yourCapturedImage = intent.getData();
 }

所以在从相机使用中捕获图像后,通过意图获取有关图像的数据:

app.use(express.static('path_to_images)

答案 1 :(得分:0)

确保您已添加相机权限,在清单中写入权限以及交叉验证运行时权限。

使用下面的Intent,并指定捕获图像的写入路径 -

   intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

   Uri outputUri = Uri.fromFile("path of your directory");
   intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);

   startActivityForResult(intent, 7);

答案 2 :(得分:0)

您还可以使用server { listen 80 default_server; server_name your-domain; location /app1 { proxy_set_header X-Real-IP $remote_addr; proxy_pass http://localhost:3000; } location /app2 { proxy_set_header X-Real-IP $remote_addr; proxy_pass http://localhost:4000; } } 中的setImageURI()代替onActivityResult()

首先在android清单中添加摄像头权限。如果您的Android版本大于棒棒糖,那么您需要添加运行时权限See documentations here

setImageBitmap()

然后你的代码将是

<uses-permission android:name="android.permission.CAMERA"/>

然后在CaptureImageFromCamera.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 7); } });

中使用setImageUrI()
onActivityResult()

答案 3 :(得分:0)

Uri imageUri = data.getData()将不再起作用。 首先从bitmap获得data,像这样:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
        val imageBitmap = data.extras.get("data") as Bitmap
        imageView.setImageBitmap(imageBitmap)
    }
}

然后保存位图图像..请在此处查找详细信息:

https://developer.android.com/training/camera/photobasics