DCloud_App_Array
DCloud_App_Array
  • 发布:2020-02-24 21:41
  • 更新:2 天前
  • 阅读:109485

Android平台云端打包权限配置

分类:HTML5+

此文档将不再维护,请参考新文档:https://uniapp.dcloud.io/tutorial/app-permission-android

根据工业和信息化部关于开展APP侵害用户权益专项整治要求,应用的隐私政策中需详细描述使用权限的用途。
为了不避免应用使用过多权限,HBuilderX2.6.3+版本对应用默认要求的权限进行简化,对第三方SDK需要的权限提供方法根据实际需求进行配置。

默认使用的基础权限

提交云端打包后会自动添加以下权限:

<uses-permission android:name="android.permission.INTERNET" />  
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />  
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
<uses-permission android:name="android.permission.READ_PHONE_STATE" />  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
<uses-permission android:name="com.asus.msa.SupplementaryDID.ACCESS" />  
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE" />  
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />  
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

权限说明:

  • android.permission.INTERNET
    使用网络权限,应用基础权限
  • android.permission.READ_EXTERNAL_STORAGE 和 android.permission.WRITE_EXTERNAL_STORAGE
    读写SD卡权限,系统授权提示未“访问设备上的照片、媒体内容和文件”,可以参考这里配置应用启动时申请读写手机存储策略
  • android.permission.READ_PHONE_STATE、ACCESS_NETWORK_STATE、ACCESS_WIFI_STATE
    读取设备标识使用,用于uni统计服务,可以参考这里配置应用启动时申请访问设备信息权限策略
  • android.permission.INSTALL_PACKAGES、android.permission.REQUEST_INSTALL_PACKAGES
    安装apk需要的权限,应用中使用plus.runtime.install升级应用则需要此权限
    注意:HBuilder2.6.3+开始Goog Play渠道默认不再添加此权限,因为GooglePlay审核规则禁止应用下载apk更新,必须通过上传GooglePlay审核更新

特定权限说明:

  • com.asus.msa.SupplementaryDID.ACCESS
    获取设备标识信息oaid在华硕设备上需要用到的权限
  • com.huawei.android.launcher.permission.CHANGE_BADGE
    设置应用角标功能在华为设备上需要用到的权限
  • com.android.launcher.permission.INSTALL_SHORTCUT
    创建桌面快捷方式权限,应用中使用plus.navigator.createShortcut创建桌面快捷方式则需要此权限。
  • com.android.launcher.permission.UNINSTALL_SHORTCUT
    删除桌面快捷方式权限,应用中使用native.js删除桌面快捷方式则需要此权限

Android自动添加三方SDK(或模块)需要的权限

提交云端打包时,勾选使用三方SDK相关的功能模块时,默认会自动添加三方SDK需要的所有权限。
为了保证三方SDK(或模块)的功能完整,默认会添加可能需要的所有权限,如果应用只用到三方SDK提供的部分功能,不希望自动添加三方SDK需要的所有权限,可以去掉勾选“Android自动添加第三方SDK需要的权限”。
为了向下兼容,云端打包默认会添加“Geolocation(定位)” -> “系统定位”模块,因此会默认添加定位权限,如果不需要定位权限,请在App权限配置界面去掉勾选“Android自定添加第三方SDK需要的权限”

注意:去掉自动添加第三方SDK需要的权限后,请务必根据需要在“Android权限配置”中勾选三方SDK必需的权限,三方SDK需要的权限详情参考后面《三方SDK(或模块)需要的权限列表》章节
保存后提交云端打包生效。

可视化界面配置

打开项目的manifest.json文件,在“App权限配置”项中去掉“Android自动添加第三方SDK需要的权限”

代码视图配置

打开项目的manifest.json文件,切换到“代码视图”。

  • uni-app项目
    在 "app-plus" -> "distribute" -> "android" 下添加 autoSdkPermissions 如下:
    "app-plus": {  
    "distribute": {  
      "android": {  
        "autoSdkPermissions": false,    // 不自动添加第三方SDK需要的Android权限  
        //...  
      },  
      //...  
    },  
    //...
  • 5+ APP(WAP2APP)项目
    在 "plus" -> "distribute" -> "google" 下添加 autoSdkPermissions 如下:
    "plus": {  
    "distribute": {  
      "google": {  
        "autoSdkPermissions": false,    // 不自动添加第三方SDK需要的Android权限  
        //...  
      },  
      //...  
    },  
    //...

Android权限配置

打开项目的manifest.json文件,在“(App)模块权限配置”页的“Android权限配置”项下根据需求勾选需要的权限:

如果没有列出需要的权限,可按以下方法手动添加
在manifest.json页面,切换到“代码视图”

  • uni-app项目
    在 "app-plus" -> "distribute" -> "android" -> "permissions" 下添加需要的权限如下:
    "app-plus": {  
    "distribute": {  
      "android": {  
        "permissions": [   //这里添加需要的Android权限  
            "<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>"  
        ]  
        //...  
      },  
      //...  
    },  
    //...
  • 5+ APP(WAP2APP)项目
    在 "plus" -> "distribute" -> "google" -> "permissions" 下添加需要的权限如下:
    "app-plus": {  
    "distribute": {  
      "google": {  
        "permissions": [   //这里添加需要的Android权限  
            "<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>"  
        ]  
        //...  
      },  
      //...  
    },  
    //...

三方SDK(或模块)需要的权限列表

Bluetooth(低功耗蓝牙)

      "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />",  
      "<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\" />",  
      "<uses-permission android:name=\"android.permission.BLUETOOTH\" />"

Contact(通讯录)

      "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",  
      "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",  
      "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>"

Fingerprint(指纹识别)

      "<uses-permission android:name=\"android.permission.USE_FINGERPRINT\"/>"

iBeacon

      "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />",  
      "<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\" />",  
      "<uses-permission android:name=\"android.permission.BLUETOOTH\" />"

Maps(定位和地图)

  • 高德地图
      "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />",  
      "<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.WRITE_EXTERNAL_STORAGE\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\" />",  
      "<uses-permission android:name=\"android.permission.BLUETOOTH\" />",  
      "<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\" />"
  • 百度地图
      "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />",  
      "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\" />",  
      "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />",  
      "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />",  
      "<uses-permission android:name=\"android.permission.INTERNET\"/>",  
      "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\" />",  
      "<uses-permission android:name=\"android.permission.READ_LOGS\" />",  
      "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"

Messaging(短彩邮件消息)

      "<uses-permission android:name=\"android.permission.RECEIVE_SMS\"/>",  
      "<uses-permission android:name=\"android.permission.SEND_SMS\"/>",  
      "<uses-permission android:name=\"android.permission.WRITE_SMS\"/>",  
      "<uses-permission android:name=\"android.permission.READ_SMS\"/>"

OAuth(登录鉴权)

  • 微信登录
    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"
  • QQ登录
    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"
  • 新浪微博登录
  • 小米登录

Payment(支付)

  • 支付宝支付
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  • 微信支付
    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"

Push(消息推送)

  • uniPush
     <!--个推通道必需权限  权限说明:  https://docs.getui.com/getui/question/sdk/ -->  
     "<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.CHANGE_WIFI_STATE\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />",  
      "<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\" />",  
      "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />",  
      "<uses-permission android:name=\"android.permission.VIBRATE\" />",  
      "<uses-permission android:name=\"android.permission.GET_TASKS\" />",  
       <!--个推通道 可选权限 用于电子围栏  -->  
      "<uses-permission android:name=\"android.permission.BLUETOOTH\" />(可选)",  
      "<uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\" />(可选)",  
      "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />(可选)",  
      "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />(可选)",  
      <!--厂商通道必需权限  小米-->  
      "<uses-permission android:name=\"android.permission.BROADCAST_PACKAGE_ADDED\" />",  
      "<uses-permission android:name=\"android.permission.BROADCAST_PACKAGE_CHANGED\" />",  
      "<uses-permission android:name=\"android.permission.BROADCAST_PACKAGE_INSTALL\" />",  
      "<uses-permission android:name=\"android.permission.BROADCAST_PACKAGE_REPLACED\" />",  
      "<uses-permission android:name=\"android.permission.RESTART_PACKAGES\" />",  
      "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\" />",  
     <!--厂商通道必需权限  魅族-->  
      "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\" />",  
      <!--厂商通道必需权限 华为-->  
      "<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\" />"

个推推送与uniPush一致

Share(分享)

  • 微信分享
    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"
  • QQ分享
    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>"
  • 新浪微博分享
      "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />",  
      "<uses-permission android:name=\"android.permission.INTERNET\" />",  
      "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />"

Speech(语音识别)

  • 百度语音识别
      "<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />",  
      "<uses-permission android:name=\"android.permission.INTERNET\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />",  
      "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\" />",  
      "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />",  
      "<uses-permission  android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />"
  • 讯飞语音识别
      "<uses-permission android:name=\"android.permission.RECORD_AUDIO\" />",  
      "<uses-permission android:name=\"android.permission.INTERNET\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />",  
      "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\" />",  
      "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />",  
      "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />"

Static(统计)

  • 友盟统计
      "<uses-permission android:name=\"android.permission.READ_LOGS\" />",  
      "<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\" />",  
      "<uses-permission android:name=\"android.permission.RECEIVE_USER_PRESENT\" />"

uni-AD

  • 今日头条穿山甲广告联盟

      "<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",  
      "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />",  
      "<uses-permission android:name=\"android.permission.GET_TASKS\"/>"
  • 腾讯优量汇广告联盟

      "<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",  
      "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />"
  • 快手广告联盟

      "<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",  
      "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />",  
      "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />"

相关参考

6 关注 分享
aliang888 w***@cc.com 1***@qq.com LunaYJ 2***@qq.com 那年夏杪的木杺

要回复文章请先登录注册

第一次改BUG

第一次改BUG

googleplay上架检测到“查询所有软件包”权限咋关闭android.permission.QUERY_ALL_PACKAGES
2 天前
r***@zhixuerj.com

r***@zhixuerj.com

回复 牛牛2021 :
没解决
5 天前
牛牛2021

牛牛2021

回复 r***@zhixuerj.com :
解决了吗?
2022-08-02 15:00
牛牛2021

牛牛2021

回复 沉积岩 :
解决了吗?统一的需求。
2022-08-02 14:59
沉积岩

沉积岩

能不能不要自动添加权限?要什么权限开发者自己确认添加?为了一个权限折腾得要死要活的
2022-07-31 17:05
牛牛2021

牛牛2021

问一下如果不需要那些云端打包自动添加的权限该怎么删除?安装权限不去掉 小米审核不通过啊
2022-07-29 08:39
kyy

kyy

问一下如果不需要那些云端打包自动添加的权限该怎么删除
2022-06-02 10:44
w***@xinboxinmo.com

w***@xinboxinmo.com

请问,oppo让整改“ 建议将未填写的敏感权限使用场景填写完整,并确认使用场景的合理合规性” 请问android的这个 描述信息应该在哪里填写?
2022-05-30 15:45
r***@zhixuerj.com

r***@zhixuerj.com

回复 devinchang :
解决了吗?想去掉安装权限,去不掉
2022-05-25 12:02
蓝度飞

蓝度飞

回复 坎坎坷坷一起走 :
因为刚开始用的本地打包,安卓代码我很多看不明白,后来选择了云打包,代码就可以一点点排除了
2022-05-17 11:51