private final int TYPE_TAKE_PHOTO = 1;
public static final int CODE_TAKE_PHOTO = 11;
public static Uri photoUri;
public static File file;
/**
* 使用相机
*/
private void useCamera() {
Intent intent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE );
// Environment.getExternalStorageDirectory()
file = new File( Environment.getExternalStorageDirectory().getAbsolutePath()
+ "image" + System.currentTimeMillis() + ".jpg" );
file.getParentFile().mkdirs();
UtilsLog.logInfo( " " + file.getAbsolutePath() );
if (Build.VERSION.SDK_INT >= 23) {
//改变Uri
photoUri = FileProvider.getUriForFile( mContext, mContext.getApplication().getPackageName() + ".fileprovider", file );
//添加权限
intent.addFlags( Intent.FLAG_GRANT_READ_URI_PERMISSION );
intent.putExtra( MediaStore.EXTRA_OUTPUT, photoUri );
} else {
photoUri = Uri.fromFile( file );
intent.putExtra( MediaStore.EXTRA_OUTPUT, Uri.fromFile( file ) );
}
mContext.startActivityForResult( intent, CODE_TAKE_PHOTO );
}
可以很清楚的看到主要区别在于获取photoUri的方式变了。
注:调用该方法前该动态申请的权限还是要有的。