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" />
相关推荐
阿笑带你学前端1 小时前
Flutter本地通知系统:记账提醒的深度实现
前端·flutter
孤鸿玉20 小时前
Fluter InteractiveViewer 与ScrollView滑动冲突问题解决
flutter
MagicSakuraD1 天前
LiveKit 的核心概念
webrtc
叽哥1 天前
Flutter Riverpod上手指南
android·flutter·ios
BG2 天前
Flutter 简仿Excel表格组件介绍
flutter
zhangmeng2 天前
FlutterBoost在iOS26真机运行崩溃问题
flutter·app·swift
恋猫de小郭2 天前
对于普通程序员来说 AI 是什么?AI 究竟用的是什么?
前端·flutter·ai编程
卡尔特斯2 天前
Flutter A GlobalKey was used multipletimes inside one widget'schild list.The ...
flutter
w_y_fan2 天前
Flutter 滚动组件总结
前端·flutter
醉过才知酒浓2 天前
Flutter Getx 的页面传参
flutter