哔哩哔哩安装应用权限管理
随着移动互联网应用越来越强大,用户对于移动应用的权限管理越来越注重。何为应用权限管理?应用的权限就是指安卓系统中应用程序在执行时获取的各种资源和服务的使用权。比如获取照片权限、获取通讯录权限等。
在很多应用中,为了更好地保证用户数据的安全性,需要对用户的权限进行管理。那么在本文中,我们将会结合哔哩哔哩应用的实际场景,来讲解在应用中如何对权限进行管理。
一、权限的获取
假设你要开发一个移动应用,应用中需要获取相册的访问权限以便能够上传图片。首先在AndroidManifest.xml文件中,需要向系统声明需要申请的权限:
在用户打开该应用之后,应用需要向系统请求该权限。在Android5.0之前,可以使用以下方式:
String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE_STORAGE);
} else {
// permission is already granted
}
要注意的是,即便用户之前已经授权过该权限,也需要对其进行判断和请求。除此之外,在Android5.0之后,使用以下方式:
String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// Show an explanation to the user asynchronously -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE_STORAGE);
// REQUEST_CODE_STORAGE 是应用自定义的常量,在后面会用到
}
}
二、权限授权的回调
当用户同意或者拒绝权限时,会调用以下方法:
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions