我设法让我的应用在Android N上运行相机,问题是当我使用相机拍照并点击确定时,它没有返回任何照片进行编辑,ps:'我的应用程序是一个照片编辑器" 。 这是我在代码中所做的更改:
是:
private Uri getImageUri() {
File file = new File(Environment.getExternalStorageDirectory().getPath(), fname);
Uri tempURI = Uri.fromFile(file);
Log.e("URI", ">> " + tempURI);
return tempURI;
}
它变成了:
private Uri getImageUri() {
File file = new File(Environment.getExternalStorageDirectory().getPath(), fname);
Uri tempURI = GenericFileProvider.getUriForFile(getApplicationContext(), getApplicationContext().getPackageName() + ".provider", file);
//Uri tempURI = Uri.fromFile(file);
Log.e("URI", ">> " + tempURI);
return tempURI;
}
和此:
case R.id.ic_camera:
// root = this.getCacheDir();
galleryopen = true;
fname = "Style" + System.currentTimeMillis() + ".jpg";
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri());
startActivityForResult(cameraIntent, SELECT_CAMERA);
break;
到:
case R.id.ic_camera:
// root = this.getCacheDir();
galleryopen = true;
fname = "Style" + System.currentTimeMillis() + ".jpg";
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, getImageUri());
startActivityForResult(cameraIntent, SELECT_CAMERA);
break;
我不知道自己错过了什么,感谢您的帮助,谢谢
答案 0 :(得分:0)
关于Android 5.1以及最终因为Android 7文件uri被弃用。相反,你必须通过fileprovider使用内容uri。
阅读FileProvider文档以了解有关它的更多信息:https://developer.android.com/reference/android/support/v4/content/FileProvider.html
并搜索内容uri或只搜索术语FileUriExposedException,您将在其他stackoverflow线程中找到一些很好的解释。