
【鸿蒙应用开发】【HCIA认证】模拟题每日1练(第8题) 原创
选项A,权限GET_DISTRIBUTED_DEVICE_INFO用于获取分布式组网内的设备列表和设备信息。
选项B,权限DISTRIBUTED_DEVICE_STATE_CHANGE用于获取分布式组网内设备的状态变化。
选项C,权限GET_BUNDLE_INFO用于查询其他应用的信息。
选项A、B、C这3个权限都为非敏感权限。非敏感权限不涉及用户的敏感数据或危险操作,仅需在config.json中申请,应用安装后即被系统授权。
选项D,权限DISTRIBUTED_DATASYNC用于不同设备间的数据交换。该权限为敏感权限。敏感权限涉及用户的敏感数据或危险操作,除了在config.json中申请之外,还需要在代码中动态申请,通过运行时发送弹窗的方式请求用户授权。
所以,这道题的答案是A、B、C。
在config.json中,A、B、C、D对应的权限全都需要通过"reqPermissions"进行申请。在MainAbility的回调方法onStart()中,还必须动态申请config.json中的敏感权限。如下所示:
将所有要动态申请的权限存放在一个字符串数组中,然后遍历该数组。对于遍历过程中的当前迭代权限permission,如果当前应用没有被用户授予该权限,再进行判断,如果可以动态申请该权限,那么就将该权限添加到一个列表中,这需要在for循环之前构造一个列表。如果不可动态申请该权限,说明已被用户或系统禁止授权。
for循环结束后,调用方法requestPermissionsFromUser(),通过运行时发送弹窗的方式请求用户授予指定的权限,传入的第一个参数,是列表canRequestPermissions对应的数组;传入的第二个参数,是一个非负的整数,表示请求码,我们指定为0。
运行工程,弹出一个对话框,询问用户是否允许使用多设备协同,也就是通过运行时发送弹窗的方式请求用户授权。如下图所示:
向大家推荐由我的教学团队开发的视频课程《鸿蒙应用开发HCIA认证超细致精讲》:
