SUV
requestcode(鸿蒙(Harmony)申请所有敏感权限)

一、新建权限列表类并录入以下关键代码

鸿蒙(Harmony)申请所有敏感权限nerror="javascript:errorimg.call(this);">

新建权限列表类

public class PermissionList {    public Context context;    public ArrayList<String> PermissionArrayList;//敏感权限列表    public int PermissionSize;//敏感权限列表大小    public String[] PermissionArray;//敏感权限数组    public static final HiLogLabel hiLogLabel=new HiLogLabel(HiLog.LOG_APP,0x00201,"错误");    public PermissionList(Context ParameterContext) {        super();        this.context=ParameterContext;    }    public void AddPermission(){        try{            PermissionArrayList=new ArrayList<>();            //允许应用在前台运行时获取位置信息。如果应用在后台运行时也要获取位置信息,则需要同时申请ohos.permission.LOCATION_IN_BACKGROUND权限。            PermissionArrayList.add(SystemPermission.LOCATION);            //允许应用在后台运行时获取位置信息,需要同时申请ohos.permission.LOCATION权限。            PermissionArrayList.add(SystemPermission.LOCATION_IN_BACKGROUND);            PermissionArrayList.add(SystemPermission.CAMERA);//允许应用使用相机拍摄照片和录制视频。            PermissionArrayList.add(SystemPermission.MICROPHONE);//允许应用使用麦克风进行录音。            PermissionArrayList.add(SystemPermission.READ_CALENDAR);//允许应用读取日历信息。            PermissionArrayList.add(SystemPermission.WRITE_CALENDAR);//允许应用在设备上添加、移除或修改日历活动。            PermissionArrayList.add(SystemPermission.ACTIVITY_MOTION);//允许应用读取用户当前的运动状态。            PermissionArrayList.add(SystemPermission.READ_HEALTH_DATA);//允许应用读取用户的健康数据。            PermissionArrayList.add(SystemPermission.DISTRIBUTED_DATASYNC);//允许不同设备间的数据交换。            PermissionArrayList.add(SystemPermission.DISTRIBUTED_DATA);//允许应用使用分布式数据的能力。            PermissionArrayList.add(SystemPermission.MEDIA_LOCATION);//允许应用访问用户媒体文件中的地理位置信息。            PermissionArrayList.add(SystemPermission.READ_MEDIA);//允许应用读取用户外部存储中的媒体文件信息            PermissionArrayList.add(SystemPermission.WRITE_MEDIA);//允许应用读写用户外部存储中的媒体文件信息            PermissionSize=PermissionArrayList.size();            PermissionArray=PermissionArrayList.toArray(new String[PermissionSize]);        }catch (Exception exception){            HiLog.error(hiLogLabel,exception.toString());        }    }}

三、打开Ability并录入以下代码

鸿蒙(Harmony)申请所有敏感权限nerror="javascript:errorimg.call(this);">

打开MainAbility

public class MainAbility extends Ability {    public static final HiLogLabel hiLogLabel=new HiLogLabel(HiLog.LOG_APP,0x00201,"错误");    PublicVariable publicVariable =new PublicVariable(this);    @Override    public void onStart(Intent intent) {        super.onStart(intent);        super.setMainRoute(MainAbilitySlice.class.getName());        publicVariable.permissionList.AddPermission();        this.AddObjectivePermissionArrayList();        if (publicVariable.ObjectivePermissionArrayList.isEmpty()){            //已经被授予全部敏感权限        }else {            this.RequestSystemPermission();        }    }    public void AddObjectivePermissionArrayList(){        for (int i = 0; i< publicVariable.permissionList.PermissionArray.length; i++){            try {                //verifySelfPermission:查询自身进程是否已被授予某权限                //IBundleManager:获取与应用程序捆绑包有关的信息                //PERMISSION_GRANTED:表示已向应用程序授予特定权限                if (this.verifySelfPermission(publicVariable.permissionList.PermissionArray[i])!= IBundleManager.PERMISSION_GRANTED){                    publicVariable.ObjectivePermissionArrayList.add(publicVariable.permissionList.PermissionArray[i]);                }else {                    //已经被授予该敏感权限                }            }catch (Exception exception){                HiLog.error(hiLogLabel,exception.toString());            }        }        publicVariable.ObjectivePermissionArraySize= publicVariable.ObjectivePermissionArrayList.size();        publicVariable.ObjectivePermissionArray= publicVariable.ObjectivePermissionArrayList.toArray(new String[publicVariable.ObjectivePermissionArraySize]);    }    public void RequestSystemPermission(){        for (int i = 0; i< publicVariable.ObjectivePermissionArray.length; i++){            //canRequestPermission:向系统权限管理模块查询某权限是否不再弹框授权了            if (this.canRequestPermission(publicVariable.ObjectivePermissionArray[i])){                this.requestPermissionsFromUser(publicVariable.ObjectivePermissionArray,101);            }else {                //显示应用需要权限的理由,提示用户进入设置授权                publicVariable.RejectPermissionList.add(publicVariable.ObjectivePermissionArray[i]);            }        }        publicVariable.RejectPermissionSize= publicVariable.RejectPermissionList.size();        publicVariable.RejectPermissionArray= publicVariable.RejectPermissionList.toArray(new String[publicVariable.RejectPermissionSize]);        for (int i = 0; i< publicVariable.RejectPermissionArray.length; i++){            //以下权限被禁止,APP使用将受限,请到手机设置界面进行授权。        }    }    @Override    //onRequestPermissionsFromUserResult:调用requestPermissionsFromUser后的应答接口    //requestCode:requestPermission中传入的requestCode    //permissions:申请的权限名    //grantResults:申请权限的结果    public void onRequestPermissionsFromUserResult(int requestCode, String[] permissions, int[] grantResults) {        //匹配requestPermissions的requestCode        if (requestCode==101){            for (int i=0; i<grantResults.length; i++){                try {                    if (grantResults[i]==IBundleManager.PERMISSION_GRANTED){                        //权限被授予                        //注意:因时间差导致接口权限检查时有无权限,所以对那些因无权限而抛异常的接口进行异常捕获处理                    }else {                        //权限被拒绝                    }                }catch (Exception exception){                    HiLog.error(hiLogLabel,exception.toString());                }            }        }    }

四、打开鸿蒙(Harmony)手机模拟器运行

鸿蒙(Harmony)申请所有敏感权限nerror="javascript:errorimg.call(this);">

运行效果

鸿蒙(Harmony)申请所有敏感权限nerror="javascript:errorimg.call(this);">

运行效果

鸿蒙(Harmony)申请所有敏感权限nerror="javascript:errorimg.call(this);">

运行效果


顶一下()     踩一下()

热门推荐

发表评论
0评