zoukankan      html  css  js  c++  java
  • 运行时权限

    权限分为普通权限和危险权限,其中危险权限有9组24个。

    在Android 6以上的系统中执行授权,如果该权限属于危险权限,那么此时要进行运行时权限处理,如果不是危险权限,则只要在AndroidManifest.xml文件中添加一下权限声明即可。

    注意:一旦授予APP某个危险权限,则该权限所在权限组的其他危险权限一并被授予。

    1. 在Android 8以上的系统中,若要APP执行拨打电话的逻辑,则需要进行授权处理,而CALL_PHONE权限为危险权限,所以我们要进行运行时权限授予。在运行时权限授予的逻辑中,首先判断该权限是否被授予,如果权限已被授予,执行相关的操作。
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) 
    

    1. 如果没被授予,申请授予权限。此时,会弹出选择框,让用户选择是否授予该权限。用户选择后,会调用onRequestPermissionsResult()。
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, 1)
    

    1. 我们需要在该Activity中重写onRequestPermissionsResult(),之后在方法中判断grantResults的长度和值来确定用户是否授权。
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull @org.jetbrains.annotations.NotNull String[] permissions, 
    @NonNull @org.jetbrains.annotations.NotNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 1:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    readContacts();
                } else {
                    Toast.makeText(this, "you denied the permission", Toast.LENGTH_LONG).show();
                }
                break;
            default:
        }
    }
    
  • 相关阅读:
    [转]VS 2008 新特性一览
    [转]WCF开发框架形成之旅WCF的几种寄宿方式
    [转]失业的程序员(五):商战之前
    [ 转]Android折叠列表 ExpandableList
    [转]extjs入门——开始
    [转]Jquery操作select
    Ext JS 下载 及 是否收费
    [转]WCF服务的批量寄宿
    [转]Android高手进阶教程(十七)之Android中Intent传递对象的两种方法(Serializable,Parcelable)!
    mat之三PermGen Metaspace永久代内存分析
  • 原文地址:https://www.cnblogs.com/ngy-liupeng/p/15167886.html
Copyright © 2011-2022 走看看