Java 不使用SD卡从本机相机拍摄图像

Java 不使用SD卡从本机相机拍摄图像,java,android,android-camera-intent,Java,Android,Android Camera Intent,我正试图写一个应用程序,我将采取从相机的图像,并使用它。起初我用 位图图像=(位图)数据.getExtras().get(“数据”) 但是我注意到这只会返回图像的缩略图。因此,我将代码更新为: public void takePhoto(){ Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); File dir = context.getDir("directory", Context.MODE_PR

我正试图写一个应用程序,我将采取从相机的图像,并使用它。起初我用

位图图像=(位图)数据.getExtras().get(“数据”)

但是我注意到这只会返回图像的缩略图。因此,我将代码更新为:

public void takePhoto(){
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    File dir = context.getDir("directory", Context.MODE_PRIVATE);
    File photo = new File(dir, "Pic.jpg");
    mImageUri = Uri.fromFile(photo);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);
    startActivityForResult(intent, 0);

}
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 0){
        if(Activity.RESULT_OK == resultCode){
            Uri selectedImage = mImageUri;
            getContentResolver().notifyChange(selectedImage, null);
            ContentResolver cr = getContentResolver();
            Bitmap bitmap;
            try {
                bitmap=android.provider.MediaStore.Images.Media.getBitmap(cr, selectedImage);
                displayIV.setImageBitmap(bitmap);
            } catch (Exception e) {
                // TODO: handle exception
            }

        }

    }
}
问题是升级代码后,在我完成拍照后,它停止调用ActivityResult函数。 拍照后,我点击相机屏幕上的“完成”按钮,但它不会调用应用程序。应用程序停留在摄像头屏幕上


知道我做错了什么吗?

需要将外部存储写入权限添加到清单。

按“上一步”按钮。相机应用程序不需要立即将控制权返回应用程序。后退按钮只会取消相机。它不会调用onActivityResult函数,在该函数中,我将使用我拍摄的图像,并且当我从数据中读取缩略图时,“完成”按钮正在回拨应用程序。请尝试使用相机应用程序可以写入的
文件,因为它无法写入您请求的位置。例如,使用
getExternalFilesDir()
getExternalCacheDir()
。可能是因为您正在使用的摄像头应用程序无法在您请求的位置写入图像时调用
setResult()
,而
setResult()
是在您的活动中触发
onActivityResult()
的因素。它也无法工作,因为此应用程序需要在没有外部存储的情况下工作。我需要一张SD卡才能使用getExternalFilesDir()或getExternalCacheDir()“它也不能工作,因为这个应用程序需要在没有外部存储的情况下工作”——所有合法随Play Store附带的Android设备都有外部存储,当设备出厂时至少1GB。“我需要一张SD卡才能使用getExternalFilesDir()或getExternalCacheDir()”——从Android SDK的角度来看,对于大多数设备来说,外部存储多年来都不是“SD卡”。无论如何,如果您要使用第三方应用程序拍照,则第三方应用程序必须对存储图像的目录具有写访问权限。