美文网首页
Flutter App权限申请详解

Flutter App权限申请详解

作者: 木马不在转 | 来源:发表于2024-01-05 21:30 被阅读0次

    App在原生功能访问中都需要申请权限后才能使用,这时可用到插件permission_handler来统一管理申请。

    一、安装:

    https://pub-web.flutter-io.cn/里搜索permission_handler根据工程版本安装对应的插件版本。

    二、两端权限配置:
    Android:

    1、找到gradle.properties文件确认如下配置是否一致

    android.useAndroidX=true
    android.enableJetifier=true
    

    2、在main中找到AndroidManifest.xml文件确认android:hardwareAccelerated="true"是否一致。
    3、然后在main debug profile三个文件夹中的AndroidManifest.xml都加上需要使用的权限(下面有参考权限)

    IOS:

    1、选中左边项目文件
    2、右边选中info选项
    3、鼠标放在info表单里任意一个选项会显示一个加号,点击加号
    4、选择对应的权限或者直接复制权限在输入框中
    5、在对应权限右边输入当前权限的使用说明

    1、2、3 步
    4、5 步
    三、使用方法:
    Map<Permission,PermissionStatus> permissionMap = await [
          Permission.locationAlways,
          Permission.bluetoothScan,
          Permission.bluetoothConnect,
        ].request();
    

    提醒:android和iOS有部分权限访问不一样,比如相册权限,使用的时候需要注意。


    Android权限可分为两类:危险权限和普通权限,危险权限需要在运行时动态请求用户授权,普通权限不需要动态请求用户授权,只需要在AndroidManifest.xml文件中声明即可
    使用样式:

        <!--定位权限-->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <!--网络权限-->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.VIBRATE" />
        <!--安装apk权限-->
        <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
        <!--相机权限-->
        <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
    
    一、危险权限
    SEND_SMS:发送短信
    RECEIVE_SMS:接收短信
    READ_SMS:读取短信
    RECEIVE_WAP_PUSH:接收WAP Push消息
    RECEIVE_MMS:接收彩信
    
    READ_EXTERNAL_STORAGE:读取SD卡中的内容
    WRITE_EXTERNAL_STORAGE:向SD卡中写入内容
    
    READ_CONTACTS:读取联系人
    WRITE_CONTACTS:写入联系人
    GET_ACCOUNTS:访问帐户列表
    
    READ_PHONE_STATE:读取手机状态
    CALL_PHONE:拨打电话
    READ_CALL_LOG:读取通话记录
    WRITE_CALL_LOG:写入通话记录
    ADD_VOICEMAIL:添加语音信箱
    USE_SIP:使用SIP协议进行网络电话
    PROCESS_OUTGOING_CALLS:处理呼出电话
    
    READ_CALENDAR:读取日历
    WRITE_CALENDAR:写入日历
    
    CAMERA:访问摄像头
    
    ACCESS_FINE_LOCATION:访问精准位置
    ACCESS_COARSE_LOCATION:访问大致位置
    
    BODY_SENSORS:访问传感器
    RECORD_AUDIO:录音
    
    一、普通权限
    ACCESS_CHECKIN_PROPERTIES:读取和写入“properties”表在checkin数据库中
    ACCESS_LOCATION_EXTRA_COMMANDS:访问额外的位置提供命令
    ACCESS_NETWORK_STATE:获取网络信息状态
    ACCESS_NOTIFICATION_POLICY:希望访问通知策略的应用程序的标记许可
    ACCESS_WIFI_STATE:获取当前WiFi接入的状态以及WLAN热点的信息
    ACCOUNT_MANAGER:通过账户验证方式访问账户管理ACCOUNT_MANAGER相关信息
    BATTERY_STATS:更新手机电池统计信息
    BIND_ACCESSIBILITY_SERVICE:请求accessibilityservice服务
    BIND_APPWIDGET:告诉appWidget服务需要访问小插件的数据库
    BIND_CARRIER_MESSAGING_SERVICE:绑定到运营商应用程序中的服务
    BIND_CARRIER_SERVICES:绑定到运营商应用程序中的服务
    BIND_CHOOSER_TARGET_SERVICE:由ChooserTargetService要求的服务
    BIND_DEVICE_ADMIN:请求系统管理员receiver
    BIND_DREAM_SERVICE:由一个DreamService要求的服务
    BIND_INCALL_SERVICE:请求MidiDeviceService服务
    BIND_INPUT_METHOD:请求InputMethodService服务
    BIND_MIDI_DEVICE_SERVICE:由一MidiDeviceService要求的服务
    BIND_NFC_SERVICE:由HostApduServiceOffHostApduService要求的服务
    BIND_NOTIFICATION_LISTENER_SERVICE:由notificationlistenerservice要求的服务
    BIND_PRINT_SERVICE:由printservice要求的服务
    BIND_REMOTEVIEWS:通过RemoteViewsService服务请求
    BIND_TELECOM_CONNECTION_SERVICE:由ConnectionService要求的服务
    BIND_TEXT_SERVICE:由textservice要求的服务
    BIND_TV_INPUT:由TvInputService要求的服务
    BIND_VOICE_INTERACTION:由VoiceInteractionService要求的服务
    BIND_VPN_SERVICE:通过VpnService服务请求
    BIND_WALLPAPER:通过WallpaperService服务请求
    BLUETOOTH:连接配对过的蓝牙设备
    BLUETOOTH_ADMIN:发现和配对新的蓝牙设备
    BLUETOOTH_PRIVILEGED:配对蓝牙设备,无需用户交互
    BROADCAST_PACKAGE_REMOVED:广播一个提示消息在一个应用程序包已经移除后
    BROADCAST_SMS:当收到短信时触发广播
    BROADCAST_STICKY:收到广播后快速收到下一个广播
    BROADCAST_WAP_PUSH:WAP PUSH服务收到后触发广播
    CALL_PRIVILEGED:拨打电话,替换系统的拨号器界面
    CAPTURE_AUDIO_OUTPUT:捕获音频输出
    CAPTURE_SECURE_VIDEO_OUTPUT:捕获视频输出
    CAPTURE_VIDEO_OUTPUT:捕获视频输出
    CHANGE_COMPONENT_ENABLED_STATE:改变组件是否启用状态
    CHANGE_CONFIGURATION:改变配置信息
    CHANGE_NETWORK_STATE:改变网络状态,如是否联网
    CHANGE_WIFI_MULTICAST_STATE:改变WiFi多播状态
    CHANGE_WIFI_STATE:改变WiFi状态
    CLEAR_APP_CACHE:清除应用缓存
    CONTROL_LOCATION_UPDATES:获得移动网络定位信息
    DELETE_CACHE_FILES:删除缓存文件
    DELETE_PACKAGES:删除应用
    DIAGNOSTIC:RW到诊断资源
    DISABLE_KEYGUARD:禁用键盘锁
    DUMP:获取系统dump信息
    EXPAND_STATUS_BAR:扩展或收缩状态栏
    FACTORY_TEST:运行工厂测试模式
    FLASHLIGHT:访问闪光灯
    GET_ACCOUNTS_PRIVILEGED:访问帐户服务中的帐户列表
    GET_PACKAGE_SIZE:获取任何package占用空间容量
    GET_TASKS:获取信息有关当前或最近运行的任务
    GLOBAL_SEARCH:允许全局搜索
    INSTALL_LOCATION_PROVIDER:安装定位提供
    INSTALL_PACKAGES:安装应用
    INSTALL_SHORTCUT:创建快捷方式
    INTERNET:访问网络连接
    KILL_BACKGROUND_PROCESSES:结束后台进程
    LOCATION_HARDWARE:使用定位功能的硬件
    MANAGE_DOCUMENTS:管理文档访问
    MASTER_CLEAR:执行软格式化,删除系统配置信息
    MEDIA_CONTENT_CONTROL:控制播放和内容
    MODIFY_AUDIO_SETTINGS:修改声音设置信息
    MODIFY_PHONE_STATE:修改电话状态
    MOUNT_FORMAT_FILESYSTEMS:格式化可移动文件系统
    MOUNT_UNMOUNT_FILESYSTEMS:挂载、反挂载外部文件系统
    NFC:执行NFC近距离通讯操作
    PACKAGE_USAGE_STATS:设置他的activities显示
    PERSISTENT_ACTIVITY:创建一个永久的Activity
    READ_FRAME_BUFFER:读取帧缓存
    READ_INPUT_STATE:读取当前键的输入状态
    READ_LOGS:读取系统底层日志
    READ_SYNC_SETTINGS:读取同步设置
    READ_SYNC_STATS:读取同步状态
    READ_VOICEMAIL:读取语音邮件
    REBOOT:重新启动设备
    RECEIVE_BOOT_COMPLETED:开机自动运行
    REORDER_TASKS:重新排序系统Z轴运行中的任务
    REQUEST_IGNORE_BATTERY_OPTIMIZATIONS:请求忽略电池优化
    REQUEST_INSTALL_PACKAGES:请求安装包
    RESTART_PACKAGES:结束任务
    SEND_RESPOND_VIA_MESSAGE:即时的短信息回复
    SET_ALARM:设置闹铃提醒
    SET_ALWAYS_FINISH:程序在后台是否总是退出
    SET_ANIMATION_SCALE:设置全局动画缩放
    SET_DEBUG_APP:设置调试程序
    SET_PREFERRED_APPLICATIONS:设置应用的参数
    SET_PROCESS_LIMIT:设置最大的进程数量的限制
    SET_TIME:设置系统时间
    SET_TIME_ZONE:设置系统时区
    SET_WALLPAPER:设置桌面壁纸
    SET_WALLPAPER_HINTS:设置壁纸建议
    SIGNAL_PERSISTENT_PROCESSES:发送一个永久的进程信号
    STATUS_BAR:打开、关闭、禁用状态栏
    SYSTEM_ALERT_WINDOW:显示系统窗口
    TRANSMIT_IR:使用设备的红外发射器
    UNINSTALL_SHORTCUT:删除快捷方式
    UPDATE_DEVICE_STATS:更新设备状态
    USE_FINGERPRINT:使用指纹硬件
    VIBRATE:允许程序振动
    WAKE_LOCK :允许程序在手机屏幕关闭后后台进程仍然运行
    WRITE_APN_SETTINGS:允许程序写入网络GPRS接入点设置
    WRITE_GSERVICES:允许程序修改Google服务地图
    WRITE_SECURE_SETTINGS:允许应用程序读取或写入安全系统设置
    WRITE_SETTINGS:允许程序读取或写入系统设置 WRITE_SYNC_SETTINGS:允许程序写入同步设置
    WRITE_VOICEMAIL:允许应用程序修改和删除系统中的现有的语音邮件,只有系统才能使用
    

    ios常用权限

    <!-- 网络 -->
    <key>NSAppTransportSecurity</key><key>NSAllowsArbitraryLoads</key><true/>
    <!-- 相册 -->
    <key>NSPhotoLibraryUsageDescription</key> <string>App需要您的同意,才能访问相册</string> 
    <!-- 相机 -->
    <key>NSCameraUsageDescription</key> <string>App需要您的同意,才能访问相机</string> 
    <!-- 麦克风 -->
    <key>NSMicrophoneUsageDescription</key> <string>App需要您的同意,才能访问麦克风</string> 
    <!-- 位置 -->
    <key>NSLocationUsageDescription</key> <string>App需要您的同意,才能访问位置</string> 
    <!-- 在使用期间访问位置 -->
    <key>NSLocationWhenInUseUsageDescription</key> <string>App需要您的同意,才能在使用期间访问位置</string> 
    <!-- 始终访问位置 -->
    <key>NSLocationAlwaysUsageDescription</key> <string>App需要您的同意,才能始终访问位置</string> 
    <!-- 日历 -->
    <key>NSCalendarsUsageDescription</key> <string>App需要您的同意,才能访问日历</string> 
    <!-- 提醒事项 -->
    <key>NSRemindersUsageDescription</key> <string>App需要您的同意,才能访问提醒事项</string> 
    <!-- 运动与健身 -->
    <key>NSMotionUsageDescription</key><string>App需要您的同意,才能访问运动与健身</string> 
    <!-- 健康更新 -->
    <key>NSHealthUpdateUsageDescription</key> <string>App需要您的同意,才能访问健康更新 </string> 
    <!-- 健康分享 -->
    <key>NSHealthShareUsageDescription</key> <string>App需要您的同意,才能访问健康分享</string> 
    <!-- 蓝牙 -->
    <key>NSBluetoothPeripheralUsageDescription</key> <string>App需要您的同意,才能访问蓝牙</string> 
    <!-- 媒体资料库 -->
    <key>NSAppleMusicUsageDescription</key> <string>App需要您的同意,才能访问媒体资料库</string>
    <!-- 语音识别 -->
    <key>NSSpeechRecognitionUsageDescription</key> <string>App需要您的同意,才能使用语音识别</string>
    

    相关文章

      网友评论

          本文标题:Flutter App权限申请详解

          本文链接:https://www.haomeiwen.com/subject/sdmindtx.html