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" />
相关推荐
tangweiguo0305198717 分钟前
Android原生(Kotlin)与Flutter混合开发 - 设备控制与状态同步解决方案
android·flutter
江上清风山间明月16 小时前
Flutter AlwaysScrollableScrollPhysics详解
flutter·滚动·scrollable·scrollphysics
普罗米拉稀18 小时前
Flutter 复用艺术:Mixin 与 Abstract 的架构哲学与线性化解密
flutter·ios·面试
yangshuo12811 天前
AI编程工具对决:Kilo vs Augment 开发Flutter俄罗斯方块游戏实战对比
flutter·游戏·ai编程
Antonio9151 天前
【音视频】WebRTC 一对一通话 peerconnection_client 分析
音视频·webrtc
tangweiguo030519871 天前
Flutter 自定义 Switch 切换组件完全指南
flutter
笔沫拾光1 天前
iOS 正式包签名指南
flutter·ios·ios签名
森之鸟2 天前
flutter项目适配鸿蒙
flutter·华为·harmonyos
傅里叶2 天前
Flutter在OrangePi 5 Plus上视频播放锁死问题
前端·flutter
书弋江山2 天前
flutter 跨平台编码库 protobuf 工具使用
android·flutter