Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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 从Intent(MediaStore.ACTION\u image\u CAPTURE)获取图像uri_Java_Android_Android Intent_Android Camera Intent_Start Activity - Fatal编程技术网

Java 从Intent(MediaStore.ACTION\u image\u CAPTURE)获取图像uri

Java 从Intent(MediaStore.ACTION\u image\u CAPTURE)获取图像uri,java,android,android-intent,android-camera-intent,start-activity,Java,Android,Android Intent,Android Camera Intent,Start Activity,嗨,当我这样做的时候 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } 在onActivit

嗨,当我这样做的时候

 Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }
在onActivityResult中,我从相机应用程序的数据意图中获取图像的缩略图

Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
mImageView.setImageBitmap(imageBitmap);
我用的是像这样的位图

但是如果我想要imageuri,这样我就可以从中获得完整大小的图像了。我尝试从上面的意图中获取图像uri

            Uri uri = data.getData();
            if (uri != null) {
                Log.d(TAG, uri.toString());
            }else{
                Log.d(TAG,"uri is null");
            }

这样做,我得到的uri在我的logcat中是空的。因此,任何人都可以让我知道如何获得图像uri。我不想使用额外的输出并指定我自己的路径。提前感谢,在低分辨率设备中会出现一个。检查解决方法。

在某些设备中有一个与此相关的bug。看一看,知道如何解决它

在某些设备中,onActivityForResult()中的Uri为空。所以你需要 将Uri设置为放置捕获的图像


谢谢我会看的谢谢我会看的请检查这个链接它对我有用
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    // If there any applications that can handle this intent then call the intent.
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        Uri fileUri = Uri.fromFile(getOutputMediaFile());
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
        startActivityForResult(takePictureIntent, CAMERA_PICKER);
    }

public File getOutputMediaFile() {
        // To be safe, you should check that the SDCard is mounted
        // using Environment.getExternalStorageState() before doing this.

        File mediaStorageDir;
        // If the external directory is writable then then return the External pictures directory.
        if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
            mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyApp");
        } else {
            mediaStorageDir = Environment.getDownloadCacheDirectory();
        }

        // Create the storage directory if it does not exist
        if (!mediaStorageDir.exists()) {
            if (!mediaStorageDir.mkdirs()) {
                Log.d("MyCameraApp", "failed to create directory");
                return null;
            }
        }

        // Create a media file name
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
        File mediaFile;
        mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg");

        return mediaFile;
    }