- 在AndroidManifest.xml文件中添加FileProvider,设置authorities属性和对应的paths。
- 创建一个xml文件provider_paths.xml,定义要共享的文件路径。在此示例中,我们要分享应用程序的根目录。
- 在MainActivity.java中,先检查权限,然后定义一个临时文件以及一个FileProvider URI。通过Intent启动相机应用程序,并将URI传递给它。收到相机应用程序返回的result后,将图像保存到获得的URI中,并使用ContentResolver通知媒体库更新。注意,我们使用FileProvider.getUriForFile()方法获取此URI。
// 检查权限
String[] permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
boolean hasPermission = true;
for (String permission : permissions) {
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
hasPermission = false;
break;
}
}
if (!hasPermission) {
ActivityCompat.requestPermissions(this, permissions, 1);
return;
}
// 定义一个临时文件和URI
File photoFile = null;
try {
photoFile = new File(getExternalFilesDir(null), "temp.jpg");
photoFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
Uri photoURI = FileProvider.getUriForFile(this, "com.example.myapp.fileprovider", photoFile);
// 打开相机应用程序并传递URI
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePicture