首先,在Manifest中添加基本的权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
6.0对隐私的设置更加...紧密了一些
在用到权限的的fragment页面上写
if (Build.VERSION.SDK_INT >= 23) {
//参1 检测当前应用是否有特定权限
//参2 需要检测权限 维系那权限 才需要动态申请
// 危险权限 跟用户隐私相关的权限 sd卡 短信 通话记录 打带你话 位置 摄像头 录音机
if (ActivityCompat.checkSelfPermission(this, sdPermission) == PermissionChecker.PERMISSION_DENIED) {
ActivityCompat.requestPermissions(this, new String[]{sdPermission}, REQUEST_SD_PERMISSION);
return;
} else {
//初始化使用目录
initDir();
}
} else {
//初始化使用目录
initDir();
}
kotlin写法
if (Build.VERSION.SDK_INT >= 23) {
if (ActivityCompat.checkSelfPermission(
this,
sdPermission
) == PermissionChecker.PERMISSION_DENIED
) {
ActivityCompat.requestPermissions(
this,
arrayOf(sdPermission),
REQUEST_SD_PERMISSION
);
saveLocalData(name, sizem, down_app_url);
return;
} else {
downApp(name, sizem, activity, down_app_url)
}
} else {
downApp(name, sizem, activity, down_app_url)
}
在主界面 就是你MainActivity中写
private String sdPermission = Manifest.permission.WRITE_EXTERNAL_STORAGE;
/***
* 申请权限的结果返回
* @param requestCode
* @param permissions 请求所有权限
* @param grantResults 用户操作后的权限结果 GRANTED授权了 DENTED未授权
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//用户授权了
if (grantResults[0] == PermissionChecker.PERMISSION_GRANTED) {
initDir();
} else {
ToastUtils.showLong("请授权sd卡权限后 再操作");
finish();
}
}