Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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 为摄像头foto-Can'创建Uri;找不到文件_Android_Android Camera - Fatal编程技术网

Android 为摄像头foto-Can'创建Uri;找不到文件

Android 为摄像头foto-Can'创建Uri;找不到文件,android,android-camera,Android,Android Camera,我在Android应用程序中使用相机,我想保存完整尺寸的foto,而不仅仅是位图。我按照文档实现了它 public class CameraUtil { public static Uri takePhotoIntent(Activity activity) { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File photoFile = null; try

我在Android应用程序中使用相机,我想保存完整尺寸的foto,而不仅仅是位图。我按照文档实现了它

public class CameraUtil {

    public static Uri takePhotoIntent(Activity activity) {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        File photoFile = null;

        try {
            photoFile = createImageFile(activity);
        } catch (IOException ex) {
            // Error occurred while creating the File
        }

        if (photoFile != null) {
            Uri photoURI = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".provider", photoFile);
            intent.putExtra(MediaStore.EXTRA_OUTPUT,
                    photoURI);
            activity.startActivityForResult(intent,
                    REQUEST_CAMERA);
            return photoURI;
        }
        return null;
    }

    public static File createImageFile(Context context) throws IOException {
        String timeStamp =
                new SimpleDateFormat("yyyyMMdd_HHmmss",
                        Locale.getDefault()).format(new Date());
        String imageFileName = "IMG_" + timeStamp + "_";
        File storageDir =
                context.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        File image = File.createTempFile(
                imageFileName,  /* prefix */
                ".jpg",         /* suffix */
                storageDir      /* directory */
        );

        return image;
    }
}
我通过以下方式在我的活动中实施它:

public class MyActivity extends AppCompatActivity
{
    private Uri photoUri;

    // On button click open camera
    @Override
    public void onClick(View view) {
        photoUri = CameraUtil.takePhotoIntent(this);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK)
        {
            if (requestCode == CameraUtils.REQUEST_CAMERA)
            {
                File file = new File(photoUri.getPath());
                // This returns false
                Log.i("Files", "Exists file: " + file.exists());
            }
        }
    }
}
GenericFileProvider:

public class GenericFileProvider extends FileProvider {}
AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    <application
        ...
        <provider
            android:name=".GenericFileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>
        </provider>
    </application>
</manifest>


首先看一看photoUri.toString()。
File File=new File(photoUri.getPath())
。那是行不通的。改用
photoFile
。那是你的文件。@blackapps,但是有没有办法从Uri获取它?photoUri.getPath().replace(“/external\u files/”,“/storage/emulated/0/”;
<paths>
    <external-path name="external_files" path="."/>
</paths>