【100个 Unity踩坑小知识点】| Unity调用API ,动态获取Android权限,附带所有Android权限表格
【摘要】 Unity 小科普老规矩,先介绍一下 Unity 的科普小知识:Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Un...

Unity 小科普
老规矩,先介绍一下 Unity 的科普小知识:
- Unity是 实时3D互动内容创作和运营平台 。
- 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。
- Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。
- 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
Unity 踩坑小知识点学习
Unity调用API ,动态获取Android权限
在开发安卓应用时,经常会用到获取Android权限的问题。
这个问题有两种解决方案
- 一种是在Android端就已经写好了动态获取权限的方法,Unity调用该方法就可以了。
- 另一种是直接在Unity中调用API,申请权限获取(在2019之后Unity已经提供了面向Android的 权限申请方法)
那对于做Unity开发的来讲,自然是直接在Unity端调用API申请权限比较方便了,下面简单说一下怎样调用。
想了解第一种方法的可以看这篇文章:Unity与Android Studio交互之 ✨ 获取手机权限(存储、录音、相机等)
Unity官方API链接:https://docs.unity3d.com/ScriptReference/Android.Permission.html

点开源码可以看到Unity也存的是权限名称,这说明我们也可以自定义一些权限用来弹窗,不一定必须使用它写好的。

Unity提供的这个API可以在脚本中直接调用,API使用示例如下:
private void Start()
{
Permission.RequestUserPermission(Permission.Camera);
Permission.RequestUserPermission(Permission.Microphone);
Permission.RequestUserPermission(Permission.FineLocation);
Permission.RequestUserPermission(Permission.CoarseLocation);
Permission.RequestUserPermission(Permission.ExternalStorageRead);
Permission.RequestUserPermission(Permission.ExternalStorageWrite);
}
下面是一个 使用Unity动态申请权限 的完整的示例代码:
第一种方案:
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Android;
public class PerTest : MonoBehaviour
{
string[] strs = new string[] {
"android.permission.INTERNET",
"android.permission.READ_PHONE_STATE",
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE",
"android.permission.ACCESS_WIFI_STATE",
"android.permission.ACCESS_NETWORK_STATE",
"android.permission.GET_TASKS",
"android.permission.REQUEST_INSTALL_PACKAGES",
"android.permission.WAKE_LOCK",
"android.permission.SYSTEM_ALERT_WINDOW",
"android.permission.CHANGE_WIFI_STATE",
"android.permission.CHANGE_NETWORK_STATE",
"android.permission.ACCESS_COARSE_LOCATION",
"android.permission.ACCESS_FINE_LOCATION",
"android.permission.SYSTEM_OVERLAY_WINDOW",
"android.permission.ACCESS_COARSE_UPDATES",
"android.permission.WRITE_SETTINGS",
"android.permission.BATTERY_STATS",
"android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
};
void Start()
{
for (int i = 0; i <= strs.Length - 1; i++)
{
Permission.RequestUserPermission(strs[i]);
Debug.Log("添加权限: " + strs[i]);
}
}
}
第二种方案:
using System.Linq;
using UnityEngine;
using UnityEngine.Android;
public class PerTest : MonoBehaviour
{
//想要获取权限的字符串数组
string[] strs = new string[] {
"android.permission.INTERNET",
"android.permission.READ_PHONE_STATE",
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE",
"android.permission.ACCESS_WIFI_STATE",
"android.permission.ACCESS_NETWORK_STATE",
"android.permission.GET_TASKS",
"android.permission.REQUEST_INSTALL_PACKAGES",
"android.permission.WAKE_LOCK",
"android.permission.SYSTEM_ALERT_WINDOW",
"android.permission.CHANGE_WIFI_STATE",
"android.permission.CHANGE_NETWORK_STATE",
"android.permission.ACCESS_COARSE_LOCATION",
"android.permission.ACCESS_FINE_LOCATION",
"android.permission.SYSTEM_OVERLAY_WINDOW",
"android.permission.ACCESS_COARSE_UPDATES",
"android.permission.WRITE_SETTINGS",
"android.permission.BATTERY_STATS",
"android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
};
void Start()
{
//开始动态申请权限
strs.ToList().ForEach(s => {
Debug.Log("RequestUserPermission: "+s);
if (!Permission.HasUserAuthorizedPermission(s))
{
Permission.RequestUserPermission(s);
Debug.Log("add RequestUserPermission: " + s);
}
else
{
Debug.Log("it has RequestUserPermission: " + s);
}
});
}
}
第三种方案:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Android;
public class PerTest : MonoBehaviour
{
public static PerTest instance;
private void Awake()
{
instance = this;
}
//初始化,权限申请要尽可能早
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
public static void Init()
{
//先把权限添加进列表,然后申请
AndroidPermissionMgr.permissionList.Add("android.permission.READ_PHONE_STATE");
AndroidPermissionMgr.permissionList.Add(Permission.ExternalStorageRead);
AndroidPermissionMgr.permissionList.Add(Permission.ExternalStorageWrite);
AndroidPermissionMgr.permissionList.Add(Permission.FineLocation);
AndroidPermissionMgr.permissionList.Add(Permission.CoarseLocation);
AndroidPermissionMgr.StartCheckPermission(0.02f); //开始申请
Debug.Log("权限申请完毕");
}
}
public static class AndroidPermissionMgr
{
static int index;
public static List<string> permissionList = new List<string>();
public static void StartCheckPermission(float time)
{
Debug.Log("开始权限申请");
if (permissionList.Count > 0)
{
Get(permissionList[index], time);
}
}
/// <summary>
/// 外部访问方法
/// </summary>
/// <param name="type">权限名</param>
/// <param name="time">如拒绝延迟多久再次申请</param>
static void Get(string type, float time)
{
if (!Permission.HasUserAuthorizedPermission(type))
{
Permission.RequestUserPermission(type);
Debug.Log("正在获取的权限:" + type);
PerTest.instance.StartCoroutine(Check(type, time));
}
else
{
Debug.Log("权限已经获取:" + type);
if (index < permissionList.Count - 1)
{
index += 1;
Get(permissionList[index], time);
}
}
}
static IEnumerator Check(string type, float time)
{
yield return new WaitForSeconds(time);
Get(type, time);
}
}
三种方案的弹窗都是一样的效果,可根据不同的权限需求添加不同的权限。
下面是参考来的所有Android权限表,大家可以参考一下。
Android常用权限整理
<!--连接网络权限,用于执行云端语音能力 -->
<uses-permission android:name="android.permission.INTERNET"/>
<!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!--读取网络信息状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--获取当前wifi状态 -->
<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.READ_CONTACTS"/>
<!--外存储写权限,构建语法需要用到此权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--外存储读权限,构建语法需要用到此权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!--配置权限,用来记录应用配置信息 -->
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
<!--手机定位信息,用来为语义等功能提供定位,提供更精准的服务-->
<!--定位信息是敏感信息,可通过Setting.setLocationEnable(false)关闭定位请求 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!--如需使用人脸识别,还要添加:摄相头权限,拍照需要用到 -->
<uses-permission android:name="android.permission.CAMERA" />
Android危险权限
| 编号 | 权限组 | 权限 |
|---|---|---|
| 0 | CALENDAR | READ_CALENDAR WRITE_CALENDAR |
| 1 | CAMERA | CAMERA |
| 2 | CONTACTS | READ_CONTACTS WRITE_CONTACTS GET_ACCOUNTS |
| 3 | LOCATION | ACCESS_FINE_LOCATION ACCESS_COARSE_LOCATION |
| 4 | MICROPHONE | RECORD_AUDIO |
| 5 | PHONE | READ_PHONE_STATE CALL_PHONE READ_CALL_LOG WRITE_CALL_LOG ADD_VOICEMAIL USE_SIP PROCESS_OUTGOING_CALLS |
| 6 | SENSORS | BODY_SENSORS |
| 7 | SMS | SEND_SMS RECEIVE_SMS READ_SMS RECEIVE_WAP_PUSH RECEIVE_MMS |
| 8 | STORAGE | READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE |
Android所有权限
| 编 号 | 权限 | 说明 |
|---|---|---|
| 001 | ACCESS_CHECKIN_PROPERTIES | 允许读写访问”properties”表在checkin数据库中, 改值可以修改上传 |
| 002 | ACCESS_COARSE_LOCATION | 允许一个程序访问CellID或 WiFi热点来获取粗略的位置 |
| 003 | ACCESS_FINE_LOCATION | 允许一个程序访问CellID或 WiFi热点来获取粗略的位置 |
| 004 | ACCESS_LOCATION_EXTRA_COMMANDS | 允许应用程序访问额外的位置提供命令 |
| 005 | ACCESS_NETWORK_STATE | 允许程序获取网络信息状态,如当前的网络连接是否有效 |
| 006 | ACCESS_NOTIFICATION_POLICY | 希望访问通知策略的应用程序的标记许可 |
| 007 | ACCESS_WIFI_STATE | 允许程序获取当前WiFi接入的状态以及WLAN热点的信息 |
| 008 | ACCOUNT_MANAGER | 允许程序通过账户验证方式访问账户管理 ACCOUNT_MANAGER相关信息 |
| 009 | ADD_VOICEMAIL | 允许一个应用程序添加语音邮件系统 |
| 010 | BATTERY_STATS | 允许程序更新手机电池统计信息 |
| 011 | BIND_ACCESSIBILITY_SERVICE | 请求accessibilityservice服务,以确保只有系统可以 绑定到它 |
| 012 | BIND_APPWIDGET | 允许程序告诉appWidget服务需要访问小插件的数据库, 只有非常少的应用才用到此权限 |
| 013 | BIND_CARRIER_MESSAGING_SERVICE | API等级高于23时使用,否则使用 BIND_CARRIER_SERVICES |
| 014 | BIND_CARRIER_SERVICES | 允许绑定到运营商应用程序中的服务的系统进程将有这个权限 |
| 015 | BIND_CHOOSER_TARGET_SERVICE | 必须由ChooserTargetService要求,确保只有系统 可以绑定到它 |
| 016 | BIND_DEVICE_ADMIN | 请求系统管理员接收者receiver,只有系统才能使用 |
| 017 | BIND_DREAM_SERVICE | 必须由一个DreamService要求,确保只有系统可以绑定到它 |
| 018 | BIND_INCALL_SERVICE | 必须由一个MidiDeviceService要求,确保只有系统可以绑定到它 |
| 019 | BIND_INPUT_METHOD | 请求InputMethodService服务,只有系统才能使用 |
| 020 | BIND_MIDI_DEVICE_SERVICE | 必须由一个MidiDeviceService要求,确保只有系统 可以绑定到它 |
| 021 | BIND_NFC_SERVICE | 由HostApduService或OffHostApduService必须确保只有系统 可以绑定到它 |
| 022 | BIND_NOTIFICATION_LISTENER_SERVICE | 必须要求由 notificationlistenerservice,以确保只有系统可以绑定到它 |
| 023 | BIND_PRINT_SERVICE | 必须要求由printservice,以确保只有系统可以绑定到它 |
| 024 | BIND_REMOTEVIEWS | 必须通过RemoteViewsService服务来请求,只有系统才能用 |
| 025 | BIND_TELECOM_CONNECTION_SERVICE | 必须由ConnectionService要求,确保只有系统 可以绑定到它 |
| 026 | BIND_TEXT_SERVICE | 必须要求textservice(例如吗 spellcheckerservice), 以确保只有系统可以绑定到它 |
| 027 | BIND_TV_INPUT | 必须由TvInputService需要确保只有系统可以绑定到它 |
| 028 | BIND_VOICE_INTERACTION | 必须由VoiceInteractionService要求, 确保只有系统可以绑定到它 |
| 029 | BIND_VPN_SERVICE | 绑定VPN服务必须通过VpnService服务来请求,只有系统才能用 |
| 030 | BIND_WALLPAPER | 必须通过WallpaperService服务来请求,只有系统才能用 |
| 031 | BLUETOOTH | 允许程序连接配对过的蓝牙设备 |
| 032 | BLUETOOTH_ADMIN | 允许程序进行发现和配对新的蓝牙设备 |
| 033 | BLUETOOTH_PRIVILEGED | 允许应用程序配对蓝牙设备,而无需用户交互。 这不是第三方应用程序可用 |
| 034 | BODY_SENSORS | 允许应用程序访问用户使用的传感器来测量他/她的 身体内发生了什么,如心率仪 |
| 035 | BROADCAST_PACKAGE_REMOVED | 允许程序广播一个提示消息在一个应用程序包已经移除后 |
| 036 | BROADCAST_SMS | 允许程序当收到短信时触发一个广播 |
| 037 | BROADCAST_STICKY | 允许程序收到广播后快速收到下一个广播 |
| 038 | BROADCAST_WAP_PUSH | WAP PUSH服务收到后触发一个广播 |
| 039 | CALL_PHONE | 允许程序从非系统拨号器里拨打电话 |
| 040 | CALL_PRIVILEGED | 允许程序拨打电话,替换系统的拨号器界面 |
| 041 | CAMERA | 允许程序访问摄像头进行拍照 |
| 042 | CAPTURE_AUDIO_OUTPUT | 允许一个应用程序捕获音频输出。不被第三方应用使用 |
| 043 | CAPTURE_SECURE_VIDEO_OUTPUT | 允许一个应用程序捕获视频输出。不被第三方应用使用 |
| 044 | CAPTURE_VIDEO_OUTPUT | 允许一个应用程序捕获视频输出,不被第三方应用使用 |
| 045 | CHANGE_COMPONENT_ENABLED_STATE | 改变组件是否启用状态 |
| 046 | CHANGE_CONFIGURATION | 允许当前应用改变配置,如定位 |
| 047 | CHANGE_NETWORK_STATE | 允许程序改变网络状态,如是否联网 |
| 048 | CHANGE_WIFI_MULTICAST_STATE | 允许程序改变WiFi多播状态 |
| 049 | CHANGE_WIFI_STATE | 允许程序改变WiFi状态 |
| 050 | CLEAR_APP_CACHE | 允许程序清除应用缓存 |
| 051 | CONTROL_LOCATION_UPDATES | 允许程序获得移动网络定位信息改变 |
| 052 | DELETE_CACHE_FILES | 允许程序删除缓存文件 |
| 053 | DELETE_PACKAGES | 允许程序删除应用 |
| 054 | DIAGNOSTIC | 允许程序到RW到诊断资源 |
| 055 | DISABLE_KEYGUARD | 允许程序禁用键盘锁 |
| 056 | DUMP | 允许程序获取系统dump信息从系统服务 |
| 057 | EXPAND_STATUS_BAR | 允许程序扩展或收缩状态栏 |
| 058 | FACTORY_TEST | 允许程序运行工厂测试模式 |
| 059 | FLASHLIGHT | 允许访问闪光灯 |
| 060 | GET_ACCOUNTS | 允许程序访问账户Gmail列表 |
| 061 | GET_ACCOUNTS_PRIVILEGED | 允许访问帐户服务中的帐户列表 |
| 062 | GET_PACKAGE_SIZE | 允许一个程序获取任何package占用空间容量 |
| 063 | GET_TASKS | 允许一个程序获取信息有关当前或最近运行的任务,一个 缩略的任务状态,是否活动等等 |
| 064 | GLOBAL_SEARCH | 允许程序允许全局搜索 |
| 065 | INSTALL_LOCATION_PROVIDER | 允许程序安装定位提供 |
| 066 | INSTALL_PACKAGES | 允许程序安装应用 |
| 067 | INSTALL_SHORTCUT | 创建快捷方式 |
| 068 | INTERNET | 允许程序访问网络连接,可能产生GPRS流量 |
| 069 | KILL_BACKGROUND_PROCESSES | 允许程序调用killBackgroundProcesses(String).方法结束后台进程 |
| 070 | LOCATION_HARDWARE | 允许一个应用程序中使用定位功能的硬件,不使用第三方应用 |
| 071 | MANAGE_DOCUMENTS | 允许一个应用程序来管理文档的访问,通常是一个文档选择器部分 |
| 072 | MASTER_CLEAR | 允许程序执行软格式化,删除系统配置信息 |
| 073 | MEDIA_CONTENT_CONTROL | 允许一个应用程序知道什么是播放和控制其内容。 不被第三方应用使用 |
| 074 | MODIFY_AUDIO_SETTINGS | 允许程序修改声音设置信息 |
| 075 | MODIFY_PHONE_STATE | 允许程序修改电话状态,如飞行模式,但不包含替换系统拨号器界面 |
| 076 | MOUNT_FORMAT_FILESYSTEMS | 允许程序格式化可移动文件系统,比如格式化清空SD卡 |
| 077 | MOUNT_UNMOUNT_FILESYSTEMS | 允许程序挂载、反挂载外部文件系统 |
| 078 | NFC | 允许程序执行NFC近距离通讯操作,用于移动支持 |
| 079 | PACKAGE_USAGE_STATS | 允许一个程序设置他的activities显示 |
| 080 | PERSISTENT_ACTIVITY | 允许程序创建一个永久的Activity,该功能标记为将来将被移除 |
| 081 | PROCESS_OUTGOING_CALLS | 允许程序监视,修改或放弃播出电话 |
| 082 | READ_CALENDAR | 允许程序读取用户的日程信息 |
| 083 | READ_CALL_LOG | 读取通话记录 |
| 084 | READ_CONTACTS | 允许程序访问联系人通讯录信息 |
| 085 | READ_EXTERNAL_STORAGE | 程序可以读取设备外部存储空间(内置SDcard和外置SDCard) 的文件,如果您的App已经添加了”WRITE_EXTERNAL_STORAGE” 权限,则就没必要添加读的权限了,写权限已经 包含了读权限了 |
| 086 | READ_FRAME_BUFFER | 允许程序读取帧缓存用于屏幕截图 |
| 087 | READ_INPUT_STATE | 允许程序读取当前键的输入状态,仅用于系统 |
| 088 | READ_LOGS | 允许程序读取系统底层日志 |
| 089 | READ_PHONE_STATE | 允许程序访问电话状态 |
| 090 | READ_SMS | 允许程序读取短信内容 |
| 091 | READ_SYNC_SETTINGS | 允许程序读取同步设置,读取Google在线同步设置 |
| 092 | READ_SYNC_STATS | 允许程序读取同步状态,获得Google在线同步状态 |
| 093 | READ_VOICEMAIL | 允许应用程序在系统读取语音邮件 |
| 094 | REBOOT | 允许程序重新启动设备 |
| 095 | RECEIVE_BOOT_COMPLETED | 允许程序开机自动运行 |
| 096 | RECEIVE_MMS | 允许程序接收彩信 |
| 097 | RECEIVE_SMS | 允许程序接收短信 |
| 098 | RECEIVE_WAP_PUSH | 允许程序接收WAP PUSH信息 |
| 099 | RECORD_AUDIO | 允许程序录制声音通过手机或耳机的麦克 |
| 100 | REORDER_TASKS | 允许程序重新排序系统Z轴运行中的任务 |
| 101 | REQUEST_IGNORE_BATTERY_OPTIMIZATIONS | 权限的应用程序必须要使用 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 这是一个正常的权限:一个应用程序请求 它将永远被授予权限,而不需要用户批准或看到它。 |
| 102 | REQUEST_INSTALL_PACKAGES | 允许应用程序请求安装包。针对API大于22必须持有 该许可使用ACTION_INSTALL_PACKAGE应用。 |
| 103 | RESTART_PACKAGES | 允许程序结束任务通过restartPackage(String)方法, 该方式将在外来放弃 |
| 104 | SEND_RESPOND_VIA_MESSAGE | 允许用户在来电的时候用你的应用进行即时的短信息回复 |
| 105 | SEND_SMS | 允许程序发送短信 |
| 106 | SET_ALARM | 允许程序设置闹铃提醒 |
| 107 | SET_ALWAYS_FINISH | 允许程序设置程序在后台是否总是退出 |
| 108 | SET_ANIMATION_SCALE | 允许程序设置全局动画缩放 |
| 109 | SET_DEBUG_APP | 允许程序设置调试程序,一般用于开发 |
| 110 | SET_PREFERRED_APPLICATIONS | 允许程序设置应用的参数,已不再工作具体查看 addPackageToPreferred(String) 介绍 |
| 111 | SET_PROCESS_LIMIT | 允许程序设置最大的进程数量的限制 |
| 112 | SET_TIME | 允许程序设置系统时间 |
| 113 | SET_TIME_ZONE | 允许程序设置系统时区 |
| 114 | SET_WALLPAPER | 允许程序设置桌面壁纸 |
| 115 | SET_WALLPAPER_HINTS | 允许程序设置壁纸建议 |
| 116 | SIGNAL_PERSISTENT_PROCESSES | 允许程序发送一个永久的进程信号 |
| 117 | STATUS_BAR | 允许程序打开、关闭、禁用状态栏 |
| 118 | SYSTEM_ALERT_WINDOW | 允许程序显示系统窗口 |
| 119 | TRANSMIT_IR | 允许使用设备的红外发射器,如果可用 |
| 120 | UNINSTALL_SHORTCUT | 删除快捷方式 |
| 121 | UPDATE_DEVICE_STATS | 允许程序更新设备状态 |
| 122 | USE_FINGERPRINT | 允许应用程序使用指纹硬件 |
| 123 | USE_SIP | 允许程序使用SIP视频服务 |
| 124 | VIBRATE | 允许程序振动 |
| 125 | WAKE_LOCK | 允许程序在手机屏幕关闭后后台进程仍然运行 |
| 126 | WRITE_APN_SETTINGS | 允许程序写入网络GPRS接入点设置 |
| 127 | WRITE_CALENDAR | 允许程序写入日程,但不可读取 |
| 128 | WRITE_CALL_LOG | 允许程序写入(但是不能读)用户的联系人数据 |
| 129 | WRITE_CONTACTS | 写入联系人,但不可读取 |
| 130 | WRITE_EXTERNAL_STORAGE | 允许程序写入外部存储,如SD卡上写文件 |
| 131 | WRITE_GSERVICES | 允许程序修改Google服务地图 |
| 132 | WRITE_SECURE_SETTINGS | 允许应用程序读取或写入安全系统设置 |
| 133 | WRITE_SETTINGS | 允许程序读取或写入系统设置 |
| 134 | WRITE_SYNC_SETTINGS | 允许程序写入同步设置 |
| 135 | WRITE_VOICEMAIL | 允许应用程序修改和删除系统中的现有的语音邮件, 只有系统才能使用 |
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)