关于android开发中权限permission的声明
在android开发中,我们经常需要进行一些权限的声明一、静态权限的声明:在android sdk<23时,我们在开发过程中只需要在AndroidManifest.xml中静态声明一下权限就可以二、动态声明权限的例子:当android sdk>23时,就需要在代码中动态声明权限
·
关于android开发中权限permission的声明
一、静态权限的声明:
在android sdk<23时,我们在开发过程中只需要在AndroidManifest.xml中静态声明一下权限就可以
例如:允许访问网络权限:<uses-permission android:name="android.permission.INTERNET"/>
监听系统开机广播权限:<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
但是,当android sdk>=23后。对于权限的处理就不仅仅只需要静态的在AndroidManifest.xml中声明了
二、动态声明权限的例子:
1、依然需要在AndroidManifest.xml中静态声明权限
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
<!-- 广播权限 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!--读取文件权限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!--写入文件权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2、在Activity的onCreat方法中,或者在需要用到权限的地方
initView();//调用权限的动态申请
public void initView(){//先判断有无权限,如果没有,则进行权限的申请
if(checkPermission(Manifest.permission.INTERNET,
Manifest.permission.RECEIVE_BOOT_COMPLETED,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE)){
}else{//若没有权限,则进行申请requestPermission(Manifest.permission.INTERNET,
Manifest.permission.RECEIVE_BOOT_COMPLETED,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
}
public boolean checkPermission(String... permissions) {//判断是否拥有权限
for(String permission:permissions){
if(ContextCompat.checkSelfPermission(this,permission)!=PackageManager.PERMISSION_GRANTED){
return false;
}
}
return true;
}
public void requestPermission(String... permissions){//请求权限,后面的int值是请求权限时对应回调方法onRequestPermissionsResult的返回码
ActivityCompat.requestPermissions(this,permissions,4);
}
@Override//请求权限的回调
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case 4:
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
finish();//代表没有请求到权限
}
break;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
更多推荐
所有评论(0)