安卓相机 : data intent returns null

标签 android android-camera android-imageview

我有一个包含多个 Activity 的 android 应用程序。

在其中一个中,我使用了一个会调用设备摄像头的按钮:

public void onClick(View view) {
    Intent photoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(photoIntent, IMAGE_CAPTURE);
}

在同一个 Activity 中,我为图像结果调用 OnActivityResult 方法:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == IMAGE_CAPTURE) {
        if (resultCode == RESULT_OK) {
            Bitmap image = (Bitmap) data.getExtras().get("data");
            ImageView imageview = (ImageView) findViewById(R.id.pic);
            imageview.setImageBitmap(image);
        } else if (resultCode == RESULT_CANCELED) {
            Toast.makeText(this, "CANCELED ", Toast.LENGTH_LONG).show();
        }
    }
}

问题是intent data 为null,OnActivityResult 方法直接转到(resultCode == RESULT_CANCELED) 和应用返回上一个 Activity 状态。

如何解决这个问题,在调用相机后,应用程序返回到当前 Activity ,其中包含一个 ImageView,其中包含拍摄的照片?

谢谢

最佳答案

只有在返回的 Intent 中传回缩略图时,默认的 Android 相机应用才会返回非空 Intent。如果您将 EXTRA_OUTPUT 与要写入的 URI 一起传递,它将返回 null Intent ,并且图片在您传入的 URI 中。

您可以通过查看 GitHub 上的相机应用源代码来验证这一点:

我猜你要么以某种方式传入了 EXTRA_OUTPUT,要么手机上的相机应用程序工作方式不同。

关于安卓相机 : data intent returns null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9890757/

相关文章:

android - 我怎样才能创建这样的布局?

安卓相机自动对焦

android - 在 Android 上首次加载时不显示相机预览

android - CPU 处理相机图像

android - 从 SD 卡加载矢量绘图到 ImageView

Android:在服务器上上传文件

android - NDK : Android. mk/GNU 制作

android - getView 未在 baseAdapter 类上调用

android - 如何将图像保存到加载了 Glide 的本地存储中?

Android ImageView扩展整个屏幕宽度