Android Cam Fatal Excpetion fileURIExposed

时间:2018-04-19 17:52:58

标签: java android kotlin

String caminhoFoto = getExternalFilesDir(null) + "/"+ System.currentTimeMillis() +".jpg";
            File arquivoFoto = new File(caminhoFoto);
            intentImage.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(arquivoFoto));

我写了这段代码,错误如下,我已经添加了提供程序,没有清单,没有任何内容,继续出现没有任何代码的错误,我被告知使用内容

Erro:

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()

1 个答案:

答案 0 :(得分:1)

在Android 7.0中,Uri上的文件方案实际上已被禁止。如果你尝试 要在转到其他应用的Intent中传递file: Uri,您将会因FileUriExposedException例外而崩溃。

您将在ClipData

中将文件:Uri值放在剪贴板上时遇到类似问题

这是来自StrictMode的更新版本。 StrictMode.VmPolicy.BuilderpenaltyDeathOnFileUriExposure()方法 触发文件的检测:Uri值和结果 FileUriExposedException个例外。并且,它似乎是预先配置的, 就像StrictMode如何预先配置为应用penaltyDeathOnNetwork()NetworkOnMainThreadException崩溃的来源。

但是,只有在targetSdkVersion设置为24或更高时才会启动。在那 此外,您需要找到其他方式将您的内容发送到其他应用,例如 通过一个名为FileProvider的类,或者你也可以 通过配置您自己的StrictMode.VmPolicy并跳过来禁用检查 directFileUriExposure(),虽然这不是一个很好的解决方案。