Flutter+WebRTC开发点对点加密即时通讯APP--AndroidPermission安卓权限申请
Flutter+WebRTC开发点对点加密即时通讯APP--AndroidPermission安卓权限申请
开篇
基于Flutter+WebRTC,开发一款点对点加密、跨端、即时通讯APP,实现文字、音视频通话聊天,同时支持图片、短视频等文件传输功能,计划支持Windows、Android平台。我准备将自己的学习和实践过程记录下来,同时分享给大家,欢迎大家一起研讨交流。这个工程是利用自己的业余时间来实现的,不定时更新。这是第二篇文章,是关于Android下的app权限的申请。
为什么要为APP申请权限呢
我们在使用移动APP时,经常会遇到APP弹窗请求权限申请,比如请求访问相册,访问地理位置,访问摄像头和麦克风,这些都是app权限的申请。Android 将权限分为不同的类型,包括安装时权限、运行时权限和特殊权限,我们目前只考虑运行时权限。
运行时权限也称为危险权限,此类权限授予应用对受限数据的额外访问权限,或允许应用执行对系统和其他应用具有更严重影响的受限操作。因此,您需要先在应用中请求运行时权限,然后才能访问受限数据或执行受限操作。当应用请求运行时权限时,系统会显示运行时权限提示,如图所示:
许多运行时权限会访问用户私人数据,这是一种特殊的受限数据,其中可能包括比较敏感的信息。例如,位置信息和联系信息就属于用户私人数据,以及麦克风和摄像头。所以说,为了保护使用者的隐私,不让APP为所欲为,所以才需要进行权限申请。
如何申请权限呢
在Flutter项目中找到android\app\src\main\AndroidManifest.xml
文件,如图所示:
每个Android应用项目必须在项目目录中加入应用清单概览文件:AndroidManifest.xml文件,且必须使用此名称, 清单文件会向 Android 构建工具、Android 操作系统和 Google Play 描述应用的基本信息。如要访问敏感用户数据(如联系人和短信)或某些系统功能(如相机和互联网访问),则 Android 应用必须请求相关权限,我们在此文件中添加权限申请代码,以申请相机权限的代码为例,格式如下: <uses-permission android:name="android.permission.CAMERA" />
从 Android 6.0(API 级别 23)开始,用户可以在运行时同意或拒绝某些应用权限。 但是,无论您的应用支持哪个 Android 版本,您都必须使用清单中的 uses-permission>
元素声明所有权限请求。 授予应用权限后,该应用便能使用受保护的功能。 否则,该应用在尝试访问这些功能时会失败。
常用权限列表
<uses-permission android:name="android.permission.CAMERA" />
相机权限
<uses-permission android:name="android.permission.WAKE_LOCK" />
唤醒锁定,锁屏运行
<uses-permission android:name="android.permission.RECORD_AUDIO" />
通过手机或耳机的麦克录制声音
android.permission.ACCESS_COARSE_LOCATION
通过WiFi或移动基站的方式获取的错略经纬度信息
android.permission.ACCESS_FINE_LOCATION
精确位置信息,例如GPS定位
android.permission.ACCESS_NETWORK_STATE
获取网络状态
android.permission.ACCESS_WIFI_STATE
获取WiFi状态
android.permission.BATTERY_STATS
获取电池电量统计信息
android.permission.BLUETOOTH
访问蓝牙设备
android.permission.BLUETOOTH_ADMIN
发现和配对蓝牙设备
android.permission.CALL_PRIVILEGED
拨打电话,替换拨号器界面
android.permission.EXPAND_STATUS_BAR
状态栏操作
android.permission.FLASHLIGHT
使用闪光灯
android.permission.INTERNET
访问网络
android.permission.READ_CONTACTS
读取联系人
android.permission.READ_FRAME_BUFFER
屏幕截图
android.permission.READ_PHONE_STATE
访问电话状态
android.permission.READ_SMS
读取短信内容
android.permission.RECEIVE_BOOT_COMPLETED
允许程序开机自动运行
android.permission.SEND_SMS
发送短信
android.permission.WRITE_EXTERNAL_STORAGE
写入外部SD卡存储
uses-feature声明
uses-feature
是声明应用使用的一项硬件或软件功能。用途是向任何外部实体表明应用所依赖的硬件和软件功能集。uses-feature
还提供了一个required
属性配置,表示此项依赖的软硬件特征是否是必须的。当它设置为true表示此app运行时必须使用此项特征,如果没有则无法工作,如果它设置为false,表示该功能只是一种优先选择,没有它仍然可以正常工作。
<uses-feature android:name="android.hardware.bluetooth" android:required="true" />
<uses-feature android:name="android.hardware.camera.any" android:required="false" />
<uses-feature android:name="android.hardware.camera" />
WebRTC所需权限
我现在在开发的是一款基于WebRTC的即时通讯APP,包括音频通话功能,视频通话功能。文件传输功能,那我们就编辑AndroidManifest.xml
文件申请相机权限、麦克风权限,文件访问权限就可以啦!
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
转载自:https://juejin.cn/post/7329336334110949417