Flutter+WebRTC+gRPC开发点对点加密即时通讯APP--AndroidPermission安卓权限申请

Flutter+WebRTC+gRPC开发点对点加密即时通讯APP--AndroidPermission安卓权限申请

开篇

基于Flutter+WebRTC+gRPC,开发一款点对点加密、跨端、即时通讯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,表示该功能只是一种优先选择,没有它仍然可以正常工作。

xml 复制代码
<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文件申请相机权限、麦克风权限,文件访问权限就可以啦!

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" />
相关推荐
恋猫de小郭6 小时前
Swift 6.3 正式发布支持 Android ,它能在跨平台发挥什么优势?
android·前端·flutter
i-阿松!9 小时前
PCB板子+ flutter前端 + go后端
物联网·flutter·pcb工艺·go1.19
RTC老炮9 小时前
webrtc弱网-BBRv2算法原理
网络·算法·webrtc
RTC老炮9 小时前
webrtc弱网-BBRv1算法原理
网络·算法·webrtc
恋猫de小郭9 小时前
Flutter 3.41.6 版本很重要,你大概率需要更新一下
android·前端·flutter
亚历克斯神21 小时前
Flutter for OpenHarmony: Flutter 三方库 mutex 为鸿蒙异步任务提供可靠的临界资源互斥锁(并发安全基石)
android·数据库·安全·flutter·华为·harmonyos
钛态21 小时前
Flutter 三方库 smartstruct 鸿蒙化字段映射适配指南:介入静态预编译引擎扫除视图及数据模型双向强转类型错乱隐患,筑稳如磐石的企业级模型治理防线-适配鸿蒙 HarmonyOS ohos
flutter·华为·harmonyos
键盘鼓手苏苏21 小时前
Flutter 组件 csv2json 适配鸿蒙 HarmonyOS 实战:高性能异构数据转换,构建 CSV 流式解析与全栈式数据映射架构
flutter·harmonyos·鸿蒙·openharmony
左手厨刀右手茼蒿21 小时前
Flutter 组件 http_requests 适配鸿蒙 HarmonyOS 实战:极简网络请求,构建边缘端轻量级 RESTful 通讯架构
网络·flutter·http
雷帝木木21 小时前
Flutter 三方库 hrk_logging 的鸿蒙化适配指南 - 实现标准化分层日志记录、支持多目的地输出与日志分级过滤
flutter·harmonyos·鸿蒙·openharmony·hrk_logging