需要在AndroidManifest文件中配置权限。(必须)

首先判断当前sdk是否大于6.0,是则判断是否已经开启了权限,否则直接执行代码doCode()

判断是否已经开启权限,如果还没有权限,则执行requestPermissions();

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){

if (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){

//没有权限则申请权限

ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);

}else {

//有权限直接执行,docode()不用做处理

doCode();

}

}else {

//小于6.0,不用申请权限,直接执行

doCode();

}

在活动中调用函数onRequestPermissionsResult()

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

switch (requestCode){

case 1:

if (grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){

//执行代码,这里是已经申请权限成功了,可以不用做处理

doCode();

}else{

ToastUtil.showShort(MainActivity.this,"权限申请失败");

}

break;

}

}

fragment中这样使用回调方法才生效:

HomeFragment.this.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},

1);

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐