String caminhoFoto = getExternalFilesDir(null) + "/"+ System.currentTimeMillis() +".jpg";
File arquivoFoto = new File(caminhoFoto);
intentImage.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(arquivoFoto));
我写这段代码,错误在下面,我已经添加了提供者,没有 list 什么都没有,继续没有任何代码的错误,我被告知使用内容
错误:
FATAL EXCEPTION: main
Process: br.com.viniciusdeep.agenda, PID: 22038
android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/br.com.viniciusdeep.agenda/files/1524003224785.jpg exposed beyond app through ClipData.Item.getUri()
最佳答案
在 Android 7.0 中,Uri 上的文件方案实际上被禁止了。如果你尝试
在 Intent 中传递一个 file:
Uri 到另一个应用程序,您将因 FileUriExposedException
异常而崩溃。
将 file: Uri 值放入 ClipData
中的剪贴板时,您将面临类似的问题
这是来自 StrictMode 的更新版本。
StrictMode.VmPolicy.Builder
有一个 penaltyDeathOnFileUriExposure()
方法
触发文件检测:Uri 值和结果
FileUriExposedException
异常。而且,这似乎是预先配置的,
就像 StrictMode 是如何预先配置为应用 penaltyDeathOnNetwork()
(
NetworkOnMainThreadException
崩溃的来源)。
但是,这只有在您的 targetSdkVersion
设置为 24 或更高时才会启动。那时
点,您将需要找到其他方法将您的内容提供给其他应用程序,例如
通过名为 FileProvider
的类,或者,您也可以
通过配置您自己的 StrictMode.VmPolicy
并跳过来禁用检查
directFileUriExposure()
,虽然这不是一个很好的解决方案。
关于java - Android Cam 致命异常文件 URI 暴露,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49927285/