Android 7.0 就是 File 路徑的變更,需要使用 FileProvider 來做
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
imgUriOri = Uri.fromFile(file);
} else {
imgUriOri = FileProvider.getUriForFile(this, getPackageName() + ".provider", file);
}
原因:
Android不再允許在app中把file://Uri暴露給其他app,包括但不侷限於通過Intent或ClipData 等方法。原因在於使用file://Uri會有一些風險,比如:
文件是私有的,接收file://Uri的app無法訪問該文件。在Android6.0之後引入運行時權限,如果接收file://Uri的app沒有申請READ_EXTERNAL_STORAGE權限,在讀取文件時會引發崩潰。因此,google提供了FileProvider,使用它可以生成content://Uri來替代file://Uri。