在Android 7.0及以上版本中,应用程序无法在文件系统中直接访问URI。因此,当您尝试将URI传递给其他应用程序时,将会抛出FileUriExposedException异常。
解决此问题的一种方法是使用FileProvider来共享URI。下面是一个示例代码,展示了如何使用FileProvider来解决这个问题:
标签内添加以下代码:
这将允许您在Pictures文件夹中访问文件。
// 获取文件的URI
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "image.jpg");
Uri fileUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".fileprovider", file);
// 启动相机应用
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
这样就可以将文件的共享URI传递给相机应用,而不会抛出FileUriExposedException异常。
请注意,如果您使用的是Android 10及以上版本,还需要在清单文件中声明以下权限:
这样就可以解决安卓相机抛出android.os.FileUriExposedException异常的问题。