您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
安卓6之後實現動態權限申請
发布时间:2021-06-29 10:17:11编辑:雪饮阅读()
之所以說是安卓6之後,是因爲看到好多文章都提到了一些權限申請的對於安卓6之後都是無效了。安卓6之前貌似是只在清單文件AndroidManifest.xml中聲明一下即可。
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
// 对应权限已拥有
Log.i("权限","权限通过");
fileInit();
} else if (ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
//上次请求该权限时用户拒绝了
ActivityCompat.requestPermissions(MainActivity.this,new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },requestCode_WRITE_EXTERNAL_STORAGE);
Log.i("权限","需要给用户说明为什么请求这个权限");
} else {
//从没有请求过权限、拒绝后不再询问
Log.i("权限","请求权限");
ActivityCompat.requestPermissions(this,
new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },requestCode_WRITE_EXTERNAL_STORAGE);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
在這裏需要注意的是請求碼雖然可以是任意數字,但是不能太長,比如我寫了一個220807就報錯了。後來我就修改成了22了。
public void onRequestPermissionsResult(int requestCode, String[] permissions,int[] grantResults) {
switch (requestCode) {
case requestCode_WRITE_EXTERNAL_STORAGE:
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 &&grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "sdcard存儲權限授权成功", Toast.LENGTH_SHORT).show();
fileInit();
} else {
Toast.makeText(this, "授權sdcard存儲權限失败", Toast.LENGTH_SHORT).show();
Timer timer;
timer = new Timer();//时间监听器
AppCompatActivity th=this;
timer.schedule(new TimerTask() {
@Override
public void run() {
th.finish();
System.exit(0);
}
},4000);
}
return;
}
// Other 'case' lines to check for other
// permissions this app might request.
}
关键字词:動態權限,安卓,權限,安卓權限