1.权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2.注册:
在清单文件activity后面
<provider
android:grantUriPermissions="true"
android:authorities="com.example.zhuangao4.view"
android:name="androidx.core.content.FileProvider"
>
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/paths">
</meta-data>
</provider>
3.res下创建XML资源文件夹:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
name="mvpath"
path="DCIM">
</external-path>
</paths>
activity代码:
动态授权
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
requestPermissions(new String[]{
"android.permission.CAMERA",
"android.permission.WRITE_EXTERNAL_STORAGE" ,
"android.permission.READ_PHONE_STATE"
},101);
}
Intent intent2 = new Intent();
intent2.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
path=CreateTime();
Uri uri = FileProvider.getUriForFile(this, "com.example.zhuangao4.view", new File(path));
intent2.putExtra(MediaStore.EXTRA_OUTPUT,uri);
startActivityForResult(intent2,103);
创建一个时间路径方法(拍完直接存储到sd卡)
public String CreateTime(){
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd_HHmmss");
String format1 = format.format(date);
return "/sdcard/DCIM/Camera/cache/IMG_"+format1+".jpg";
}
拍完设置头像
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 103 && resultCode == Activity.RESULT_OK){
Glide.with(this).load(path).transform(new CircleCrop()).into(image);
}
}
效果: