安卓动态权限申请
在安卓开发中,有些权限我们可以写在Manifest.xml文件中去申请权限,另外有一些权限在安卓6.0之后需要我们在用到这些权限的时候动态的向用户去申请。
具体的分类看这里 :
Android权限申请哪些需要动态申请
我们现在看一下怎么在代码中动态的进行权限申请。
if(ContextCompat.checkSelfPermission(this, Manifest.permission.${PermissionnName})!=PackageManager.PERMISSION_GRANTED)
{
//判断用户是否拒绝过这个权限,提示用户手动去设置中给予我们的APP相关权限
if(ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.${PermissionnName}))
{
}
else
{
//申请这个权限
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},MY_PERMISSION_REQUEST_CODE);
}
}
上方代码中 ${PermissionnName} 代表想要申请的权限名,按需进行替换即可
然后我们还需要对用户是否给予了APP要求的权限进行监听,在安卓中有一个回调函数可以帮我们做这件事:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode)
{
case MY_PERMISSION_REQUEST_CODE:
{
if (grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
//用户允许了权限
}
else
{
//用户拒绝了权限
}
break;
}
}
}
这就是动态权限申请的步骤,配合自己的业务逻辑处理即可。