【flutter】使用permission_handler配置android和 iOS的权限

article/2025/9/22 6:04:57

文章目录

  • 前言
  • 准备工作
  • 一、使用步骤
    • 1.使用的插件
    • 2.配置权限
  • 二、代码示例
  • 三、结果截图


前言

flutter在pub.flutter-io.cn插件库中有很多的关于权限配置的插件,但是就我个人而言,比较推荐使用permission_handler这个插件。当我们打开permission_handler时候,往往新手小白会因为它的官网文档而弄的一头雾水,权限配置往往涉及到android和ios两个方向的相关知识,有可能大多数人就只会android或者iOS的某一端知识,在配置权限时出现屡屡不生效的问题。接下来我从零到一教你如何配置吧。

准备工作

flutter版本号:3.0.0
dart版本号:2.12.0
插件:permission_handler

一、使用步骤

1.使用的插件

permission_handler: ^9.0.2
flutter_easyloading: ^3.0.5

2.配置权限

  • android

(1)将以下内容添加到“gradle.properties”文件中:(针对androidX及以上的版本)

android.useAndroidX=true
android.enableJetifier=true

(2)将以下内容添加到“AndroidManifest.xml”文件中:(针对androidX及以上的版本)

android:hardwareAccelerated="true"

(3)按需在“AndroidManifest.xml”添加本项目需要用到的权限:(本次以保存图片到本地相册举例)

<!-- 写权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 读权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  • ios

(1)将以下内容添加到您的文件中:Podfile

post_install do |installer|installer.pods_project.targets.each do |target|... # Here are some configurations automatically generated by flutter# Start of the permission_handler configurationtarget.build_configurations.each do |config|# You can enable the permissions needed here. For example to enable camera# permission, just remove the `#` character in front so it looks like this:## ## dart: PermissionGroup.camera# 'PERMISSION_CAMERA=1'##  Preprocessor definitions can be found in: https://github.com/Baseflow/flutter-permission-handler/blob/master/permission_handler_apple/ios/Classes/PermissionHandlerEnums.hconfig.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)',## dart: PermissionGroup.calendar# 'PERMISSION_EVENTS=1',## dart: PermissionGroup.reminders# 'PERMISSION_REMINDERS=1',## dart: PermissionGroup.contacts# 'PERMISSION_CONTACTS=1',## dart: PermissionGroup.camera# 'PERMISSION_CAMERA=1',## dart: PermissionGroup.microphone# 'PERMISSION_MICROPHONE=1',## dart: PermissionGroup.speech# 'PERMISSION_SPEECH_RECOGNIZER=1',## dart: PermissionGroup.photos# 'PERMISSION_PHOTOS=1',## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]# 'PERMISSION_LOCATION=1',## dart: PermissionGroup.notification# 'PERMISSION_NOTIFICATIONS=1',## dart: PermissionGroup.mediaLibrary# 'PERMISSION_MEDIA_LIBRARY=1',## dart: PermissionGroup.sensors# 'PERMISSION_SENSORS=1',   ## dart: PermissionGroup.bluetooth# 'PERMISSION_BLUETOOTH=1',## dart: PermissionGroup.appTrackingTransparency# 'PERMISSION_APP_TRACKING_TRANSPARENCY=1',## dart: PermissionGroup.criticalAlerts# 'PERMISSION_CRITICAL_ALERTS=1']end # End of the permission_handler configurationend
end

(2)删除要使用的权限前面的字符。例如,如果您需要访问相册,请确保代码如下所示:#

## dart: PermissionGroup.photos'PERMISSION_PHOTOS=1',

(3)Info.plist 添加

<!-- 保存图片权限 -->
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Please allow the APP to save photos to the album</string>

二、代码示例

import 'dart:io';import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:permission_handler/permission_handler.dart';class HomePage extends StatefulWidget {const HomePage({Key? key}) : super(key: key);@overrideState<HomePage> createState() => _HomePageState();
}class _HomePageState extends State<HomePage> {/// 动态申请权限,需要区分android和ios,很多时候它两配置权限时各自的名称不同/// 此处以保存图片需要的配置为例Future<bool> requestPermission() async {late PermissionStatus status;// 1、读取系统权限的弹框if (Platform.isIOS) {status = await Permission.photosAddOnly.request();} else {status = await Permission.storage.request();}// 2、假如你点not allow后,下次点击不会在出现系统权限的弹框(系统权限的弹框只会出现一次),// 这时候需要你自己写一个弹框,然后去打开app权限的页面if (status != PermissionStatus.granted) {showCupertinoDialog(context: context,builder: (context) {return CupertinoAlertDialog(title: const Text('You need to grant album permissions'),content: const Text('Please go to your mobile phone to set the permission to open the corresponding album'),actions: <Widget>[CupertinoDialogAction(child: const Text('cancle'),onPressed: () {Navigator.pop(context);},),CupertinoDialogAction(child: const Text('confirm'),onPressed: () {Navigator.pop(context);// 打开手机上该app权限的页面openAppSettings();},),],);});} else {return true;}return false;}// 保存网络图片saveNetworkImg(String imgUrl) async {// Todo// 处理保存网络图片的逻辑EasyLoading.showToast('处理保存网络图片的逻辑');}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('home'),),floatingActionButton: FloatingActionButton(onPressed: () async{// 使用// 首先判断是否有权限,没权限就不执行了bool permission = await requestPermission();permission ? saveNetworkImg('imgUrl') : null;},child: const Icon(Icons.adb),),);}
}

三、结果截图

  • android
  • ios

http://chatgpt.dhexx.cn/article/gGbtCe1v.shtml

相关文章

Flutter 混合开发 - 03 百度地图定位功能 ios 篇

本节目标 创建 ios flutter 插件流程集成百度定位功能 视频 https://www.bilibili.com/video/BV1HT4y1L73i/ 代码 https://github.com/ducafecat/flutter_baidu_plugin_ducafecat/releases/tag/v1.0.3 百度平台部分 设置 AK https://lbsyun.baidu.com/apiconsole/key#/h…

iOS-Charts图表绘制一块平行X轴线性指标

养小猫咪的伙伴来我的店铺逛逛吧!抖音商城搜索#早睡早起的猫咪小铺子 最近做项目需要画柱状图和折线图&#xff0c;引入了第三方的图标库Charts。 这个图表库基本上能够满足大家对于图表绘制的需要&#xff0c;但是api接口的解释并不是很详细&#xff0c;该库有强大的功能&…

ios模拟器 - Simulator录制视频

养小猫咪的伙伴来我的店铺逛逛吧!抖音商城搜索#早睡早起的猫咪小铺子 1.进入终端&#xff0c;cd到要放置录屏文件的位置 2.输入命令 ,输入你的命名 xcrun simctl io booted recordVideo xxx.mov 提示&#xff1a;停止录屏 control c 最后进入到对应文件夹就可以找到录制好的…

猫猫学iOS之安装cocoapods

啥事cocoa pods 不解释&#xff0c;自己看这里只有一次安装流程&#xff0c;猫猫的安装流程。 打开命令行&#xff0c;我用的是ruby安装&#xff0c;mac自带ruby&#xff0c;啥是ruby&#xff0c;不解释&#xff0c;因为开始我也不懂&#xff0c;就当他是命令行。 1&#xff…

基于Java的在线聊天APP系统分析及设计

基于Java的在线聊天APP系统分析及设计 目录 基于Java的在线聊天APP系统分析及设计 1 一、 需求分析 3 核心用户分析 3系统的主要功能的概述 3项目操作流程图 4功能详解 4 登录 4注册 4消息盒子 4好友盒子 4好友列表 4朋友验证 4我的账号 4新的朋友 5验证消息 5好友资料卡 5删…

Taro+react仿微信app聊天室|taro仿微信界面|taro聊天/朋友圈

基于TaroreactreduxRNtaroPop等技术开发的跨端聊天App实例&#xff0c;支持编译到多端H5小程序RN端&#xff0c;界面仿制微信聊天界面&#xff0c;实现了消息发送、表情、图片预览、长按菜单、红包、朋友圈等功能。 Taro三端统一聊天应用&#xff1a;taro-chatroom (仿微信界面…

android机器人聊天软件,虚拟男友聊天机器人

虚拟男友聊天机器人是一款能为大家提供专业的虚拟聊天软件&#xff0c;在这里大家可以设定一个符合自己心意的男友&#xff0c;让你们之间的对话是充满了甜蜜&#xff0c;并且还可以自己设定回复方式&#xff0c;对话也是十分的轻松愉悦&#xff0c;快来下载虚拟男友聊天机器人…

uniapp开发即时通讯聊天app,纯nvue仿微信,前后端开源

github地址&#xff1a;GitHub - guipie/GpChat: uniapp开发的纯nvue的即时聊天通讯App。 gitee&#xff1a;https://gitee.com/chenwei_zq/GpChat uniapp开发的纯nvue的即时聊天通讯App。 后台采用.net6,一套解决方案&#xff0c;分布式部署。 App采用uniapp的纯nvue&#x…

使用dialogflow和firebase构建whatsapp聊天机器人的指南

ChatBots are conversational agents, programs capable of conducting a conversation with an Internet user. In this tutorial I’ll walk you through an implementation of WhatsApp chatbot using Twilio platform. ChatBots是对话代理&#xff0c;是能够与Internet用户…

【uni-app】uni-app实现聊天页面功能(小程序)——布局篇

文章目录 前言划分区域问题内容溢出关于调试聊天框 代码实现 前言 在工作中使用uni-app参与开发一个小程序&#xff0c;其中要写一个简单的聊天页面&#xff0c;虽然功能不多&#xff08;只有一个发送文字的功能&#xff09;&#xff0c;但是其中的细节比较多&#xff0c;也踩…

如何搜索WhatsApp聊天消息

Trying to find a specific message in your huge WhatsApp chat log? There are two ways to search, so you can find what you’re looking for quickly. 试图在庞大的WhatsApp聊天日志中查找特定消息&#xff1f; 有两种搜索方式&#xff0c;因此您可以快速找到要查找的内…

【uni-app】uni-app实现聊天页面功能——功能篇(下)

目录 前言一、聊天框随键盘抬起思路代码实现 二、聊天消息列表随着聊天框的增高而滚动到最底部思路 三、问题完整代码实现总结 前言 前面我有写关于如何进行聊天页面布局和实现聊天消息滚动到最底部的文章。 【uni-app】uni-app实现聊天页面功能——功能篇&#xff08;上&…

如何将 WhatsApp 聊天添加到您的网站

WhatsApp是全球最受欢迎的消息传递应用程序。平台上有超过 2 亿活跃用户与朋友、家人和企业进行交流。对于企业而言&#xff0c;WhatsApp 是与客户进行个人、可访问和非正式对话的理想渠道。 要将 WhatsApp 作为渠道引入您的客户旅程&#xff0c;第一步是将 WhatsApp 聊天按钮…

uni-app 即时聊天

项目介绍 前段时间在B站看到了有一个UP主在讲uni-app即时聊天的项目&#xff08;逸刻时光&#xff09;&#xff0c;在看了这个视频之后&#xff0c;感觉还是挺有兴趣的&#xff0c;所以在看他的讲解视频之后&#xff0c;就自己动手写了这个即时聊天项目&#xff0c;在样式方面…

uniapp+nvue实现仿微信App聊天应用 —— 成功实现好友聊天+语音视频通话功能

基于uniapp nvue实现的uniapp仿微信App聊天应用 txim 实例项目&#xff0c;实现了以下功能。 1: 聊天会话管理 2: 好友列表 3: 文字、语音、视频、表情、位置等聊天消息收发 4: 一对一语音视频在线通话 技术实现 开发环境&#xff1a;HbuilderX nodejs技术框架&#xff…

WhatsApp聊天记录迁移新手机,备份如何找回和删除?

当外贸人更换手机时&#xff0c;面临的第一大问题就是WhatsApp数据迁移的问题。 因为WhatsApp的聊天记录、联系人、图片、视频等&#xff0c;都是与客户息息相关的数据&#xff0c;对外贸人来讲都非常重要&#xff0c;所以一定要确保在换手机过程中不丢失WhatsApp的任何资料。…

[uni-app]聊天App实例

项目简介 基于uni-appvuevuexuniPopswiper等技术开发的仿微信聊天室uniapp-chatroom项目&#xff0c;类似vue及小程序api语法使开发更加方便&#xff0c;实现了发送图文消息、表情(gif动图)&#xff0c;图片预览、地图位置、红包、仿微信朋友圈等功能 效果图 在H5 / 小程序 …

开发社交聊天APP需要注意什么?如何快速开发聊天功能

随着互联网的发展&#xff0c;人们的沟通方式也在悄悄发生变化&#xff0c;由原来的面对面沟通&#xff0c;发展为网上沟通。让大家日常生活的通讯越来越方便了&#xff0c;各种APP层出不穷。那么&#xff0c;想开发一款社交聊天并进行运营&#xff0c;需要注意哪些方面&#x…

比较好用的聊天交友软件?最受年轻人欢迎的APP在这

现在都有哪些比较火,比较好用的聊天交友软件?移动社交是一件越来越普遍的事情&#xff0c;人们可以通过互联网&#xff0c;在社交软件上认识众多的一样的有趣人群&#xff0c;在国内都有哪些**的交友app哪个好??在中国在中国最受年轻人欢迎的APP又有哪些呢? 微信 微信可以…

程序员的时钟/原生抖音罗盘时钟代码分享/ 罗盘文字时钟软件非常火 /文字时钟

原生抖音罗盘时钟代码分享 罗盘文字时钟软件非常火 文字时钟 本站给大家分享这款就是通过原生j来s实现的文字时钟源码&#xff0c;有喜欢的朋友可以下载哦&#xff0c;无需安装&#xff0c;上传访问即可使用 简单实现&#xff1a;https://sucaiip.com/time-302.html