0、拍照方法前加入此方法://取消嚴格模式 FileProvider
? ? ? ? if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
? ? ? ? ? ? StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
? ? ? ? ? ? StrictMode.setVmPolicy(builder.build());
? ? ? ? }
1.在AndroidManifest.xml中配置provider? 需要把com.example.android換成自己的包名
<provider
? ? android:name="android.support.v4.content.FileProvider"
? ? android:authorities="com.example.android.fileprovider"
? ? android:exported="false"
? ? android:grantUriPermissions="true">
? ? <meta-data
? ? ? ? android:name="android.support.FILE_PROVIDER_PATHS"
? ? ? ? android:resource="@xml/file_paths"></meta-data>
</provider>
@xml/file_paths 需要在res文件下面添加xml文件夾,下一層級添加file_paths
<?xml version="1.0" encoding="utf-8"?>
? ? ? ? name="files_root"
? ? ? ? path="Android/data/com.zzdj.esports.android/" />
? ? ? ? name="external_storage_root"
? ? ? ? path="." />
2、拍照的文件存儲
?File的路徑最好是getExternalFilesDir() or getFilesDir(),這樣app被卸載,這兩個文件路徑也會被刪除
private File createImageFile() throws IOException {
? ? String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
? ? String imageFileName = "JPEG_" + timeStamp + "_";
? ? File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
? ? File image = File.createTempFile(imageFileName, ".jpg", storageDir);
? ? return image;
}