本节内容主要介绍使用Delphi XE系列工具开发Android应用时需要使用到的Android相关权限设置内容。
Delphi XE8移动应用开发中Android
权限设置
选择Project > Options > Uses Permissions,打开权限设置对话框。
使用此对话框可以指定你Android应用程序所需要的权限。RAD Studio将在AndroidManifest.xml文件中添加指定权限。
注意:仔细查看你的Android应用程序权限列表配置。您应该禁用您的应用程序并不需要的权限,因为:
- Android设备在你的应用第一次运行时,将提示用户接受每个请求的权限。
- 应用商店如谷歌播放可以使用权限来筛选出应用程序。
例如,如果您的应用程序需要Call phone的许可(其默认需要),应用商店可能不会让用户安装应用程序在平板电脑上。
例如:
- InterBase 需要一定的权限:
- Internet:允许应用程序访问网络套接字。如果您正在构建C/S应用程序访问远程数据库的InterBase,这个权限是必须具备的。
- Read external storage/Write external storage:允许访问InterBase文件,包括数据库文件存放的外部存储位置。应用程序需要此权限执行读/写操作。
- 有些FireMonkey控件需要一定的权限。例如:
- TCalendarEdit需要Read calendar 、 Write calendar(读取日历和写日历)的权限。
- TLocationSensor需要Access coarse location 、 Access fine location(访问粗略的位置和访问精准的位置)权限。
为FireMonkey Android 应用程序设置一些基本的权限
新的Android应用程序都默认设置以下所需的权限:
- 访问粗略的位置(Access coarse location)
- 访问精确的位置(Access fine location)
- 手机通话(Call phone)
- 相机(Camera)
- 互联网(Internet)
- 读取日历(Read calendar)
- 读取外部存储(Read external storage)
- 写日历(Write calendar)
- 写外部存储(Write external storage)
- 读取手机状态(Read phone state)
Internet权限始终设置为开发配置
Android应用程序有几个默认设置权限,包括INTERNET权限。
- 当你构建开发Android应用(在 Project Manager),INTERNET权限始终会隐式开启,即使您禁用了INTERNET权限的使用。这是因为RAD Studio调试器需要INTERNET权限。
- 然而,对于应用程序商店的配置,您可以使用Project > Options > Uses Permissions禁用Internet的权限。
这里是Project Manager开发配置节点设置Android应用程序:
基本使用权限
下面使用权限可满足大多数Android应用程序需要。一些最常用的基本权限是由RAD Studio在创建Android应用时预设。
允许 | 描述 | |
访问粗略的位置 | Access coarse location | 允许应用访问网络位置来源的大概位置,如手机发射塔和Wi-Fi。 |
访问精确的位置 | Access fine location | 允许应用从位置源,例如GPS、手机基站和Wi-Fi接入的精确位置。 |
访问位置额外命令 | Access location extra commands | 允许应用程序访问额外的位置提供程序命令。 |
访问模拟位置 | Access mock location | 允许应用程序由测试提供创建模拟位置。 |
接入网络状态 | Access network state | 允许程序访问有关网络的信息。 |
访问无线网络状态 | Access wifi state | 允许应用程序访问Wi-Fi网络的信息。 |
添加语音邮件 | Add voicemail | 允许应用程序添加语音邮件进入系统。 |
验证帐户 | Authenticate accounts | 允许应用程序充当一个的AccountManager AccountAuthenticator。 |
电池统计 | Battery stats | 允许应用程序收集电池统计信息。 |
绑定无障碍服务 | Bind accessibility service | 必须有AccessibilityService,确保可绑定到它。 |
绑定设备管理 | Bind device admin | 必须有设备管理接收机,以确保只有系统可以与其进行交互。 |
绑定输入法 | Bind input method | 必须有InputMethodService,以确保只有该系统可绑定到它。 |
绑定remoteviews | Bind remoteviews | 必须有RemoteViewsService,以确保只有该系统可绑定到它。 |
绑定文本服务 | Bind text service | 必须有TextService。 |
绑定VPN服务 | Bind vpn service | 必须有VpnService,以确保只有该系统可结合到它。 |
绑定壁纸 | Bind wallpaper | 必须有WallpaperService,以确保只有该系统可结合到它。 |
蓝牙 | Bluetooth | 允许应用程序连接到已配对的蓝牙设备。 |
蓝牙管理 | Bluetooth admin | 允许应用程序发现和配对蓝牙设备。 |
粘性广播 | Broadcast sticky | 允许应用程序粘性广播。这些广播数据发送后就一直存在于系统的消息容器里面,等待对应的处理器去处理。 |
手机通话 | Call phone | 允许应用程序不通过拨号用户界面初始化一个电话拨号。 |
相机 | Camera | 需要能够访问的摄像机装置。 |
更改配置 | Change configuration | 允许应用程序修改当前设置,如区域。 |
更改网络状态 | Change network state | 允许应用程序改变网络连接状态。 |
更改无线多播状态 | Change wifi multicast state | 允许应用程序进入Wi-Fi多播模式。 |
更改无线状态 | Change wifi state | 允许应用程序更改Wi-Fi连接状态。 |
清除应用程序缓存 | Clear app cache | 允许应用程序清除设备上的所有安装的应用程序缓存。 |
禁用键盘锁 | Disable keyguard | 允许应用程序禁用键盘锁。 |
展开状态栏 | Expand status bar | 允许应用程序展开或折叠状态栏。 |
手电筒 | Flashlight | 允许访问手电筒。 |
获取账户 | Get accounts | 允许访问的帐户服务帐户列表。 |
获取封装尺寸 | Get package size | 允许找出任何package占用空间的应用程序。 |
获取任务 | Get tasks | 允许应用程序获取有关当前或最近运行的任务的信息。 |
全球搜索 | Global search | 允许全局搜索系统来访问特定内容提供者的数据。 |
互联网 | Internet | 允许应用程序打开网络套接字。 |
终止后台进程 | Kill background processes | 允许应用程序调用关闭后台进程。 |
管理账户 | Manage accounts | 允许应用程序来管理的AccountManager帐户列表。 |
修改音频设置 | Modify audio settings | 允许应用程序修改全局音频设置。 |
NFC | NFC | 允许应用程序通过NFC进行I / O操作。 |
处理外拨电话 | Process outgoing calls | 允许应用程序监视,修改或中止拨出的电话。 |
读取日历 | Read calendar | 允许应用程序读取用户的日历数据。 |
查看通话记录 | Read call log | 允许应用程序读取用户的通话记录。 |
读取通讯录 | Read contacts | 允许应用程序读取用户联系人数据。 |
读取外部存储 | Read external storage | 允许应用程序从外部存储读取。 |
读历史书签 | Read history bookmarks | 允许应用程序读取(但不能写入)用户的浏览历史记录和书签。 |
读取手机状态 | Read phone state | 允许手机状态只读访问。 |
阅读简介 | Read profile | 允许应用程序读取用户的个人资料的数据。 |
阅读短信 | Read SMS | 允许应用程序读取短信。 |
阅读社交流 | Read social stream | 允许应用程序从用户的社交流中读取。 |
读取同步设置 | Read sync settings | 允许应用程序读取同步设置。 |
阅读同步统计 | Read sync stats | 允许应用程序读取同步状态。 |
读取用户词典 | Read user dictionary | 允许应用程序读取用户字典。 |
接收完成开机 | Receive boot completed | 允许应用程序接收系统启动之后信息,即ACTION_BOOT_COMPLETED广播。 |
接收MMS | Receive MMS | 允许程序监控将收到MMS彩信,记录或进行处理。 |
接收短信 | Receive SMS | 允许程序监控将收到短信息,记录或进行处理。 |
接收WAP推送 | Receive WAP push | 允许程序监控将收到WAP PUSH信息。 |
录制音频 | Record audio | 允许应用程序录制音频。 |
任务重新排序 | Reorder tasks | 允许应用程序更改任务的顺序。 |
发送短信 | Send SMS | 允许应用程序发送短信。 |
设置提醒 | Set alarm | 允许应用程序通过广播意向为用户设置提醒。 |
设置时区 | Set time zone | 允许应用程序设置系统时区。 |
设置壁纸 | Set wallpaper | 允许应用程序设置壁纸。 |
设置壁纸提示 | Set wallpaper hints | 允许应用程序设置壁纸提示。 |
订阅的Feed阅读 | Subscribed feeds read | 允许应用程序允许访问订阅RSS Feed内容。 |
订阅的Feed写 | Subscribed feeds write | 允许应用程序允许写订阅RSS Feed内容。 |
系统提示窗口 | System alert window | 允许应用程序打开使用类型TYPE_SYSTEM_ALERT,对其他所有程序的顶层窗口。 |
使用凭据 | Use credentials | 允许应用程序从请求的AccountManager authtokens。 |
使用SIP | Use SIP | 允许使用SIP服务的应用程序。 |
自动计费(应用内结算) | Vending billing (In-app Billing) | 允许使用应用内结算服务。请参阅Android文档的附加 信息。 |
颤动 | Vibrate | 允许访问振动。 |
唤醒锁 | Wake lock | 允许使用PowerManager WakeLocks让处理器进入休眠或屏幕变暗。 |
写日历 | Write calendar | 允许应用程序写入(但不读取)用户的日历数据。 |
写通话记录 | Write call log | 允许应用程序写入(但不读)用户的联系人数据。 |
写联系方式 | Write contacts | 允许应用程序写入(但不读)用户的联系人数据。 |
写外部存储 | Write external storage | 允许应用程序写入到外部存储器。 |
写历史的书签 | Write history bookmarks | 允许应用程序写入(但不读取)用户的浏览历史记录和书签。 |
写个人资料 | Write profile | 允许应用程序写入(但不读)用户的个人配置文件数据。 |
写设置 | Write settings | 允许应用程序读取或写入系统设置。 |
写短信 | Write SMS | 允许应用程序编写短信。 |
写社交流 | Write social stream | 允许应用程序写入(但不读)用户的社交数据流。 |
写入同步设置 | Write sync settings | 允许程序写入同步设置。 |
写入用户词典 | Write user dictionary | 允许应用程序写入用户字典。 |
高级用途权限
下面使用权限仅适用于高级Android功能需要,而大多数应用程序应该不需要。
项目 | 描述 | |
访问登记属性 | Access checkin properties | 允许读取“属性”表/写访问在checkin数据库,更改上载到值。 |
访问面护圈 | Access surface flinger | 允许使用SurfaceFlinger的低级功能的应用程序。 |
客户经理 | Account manager | 允许应用程序调用到AccountAuthenticators。 |
绑定appwidget | Bind appwidget | 允许应用程序知道哪些应用程序可以访问AppWidget的数据AppWidget服务。 |
砖 | Brick | 需要能够禁用设备(非常危险的!)。 |
广播包中删除 | Broadcast package removed | 允许应用程序广播一个应用程序包已经被删除的通知。 |
广播SMS | Broadcast sms | 允许应用程序广播一个短信回执通知。 |
广播WAP PUSH | Broadcast WAP PUSH | 允许应用程序广播WAP PUSH收到通知。 |
呼叫特权 | Call privileged | 允许拨打任何号码,包含紧急号码无需通过拨号用户界面需要用户确认通话应用程序被放置。 |
修改控件启用状态 | Change component enabled state | 允许应用程序更改应用程序控件(而非它自己)是否被启用。 |
清除应用用户数据 | Clear app user data | 允许应用程序清除用户数据。 |
控制位置更新 | Control location updates | 允许启用/从无线电禁止位置更新提示。不建议一般应用。 |
删除缓存文件 | Delete cache files | 允许应用程序删除缓存文件。 |
删除包 | Delete packages | 允许应用程序删除包。 |
设备电源 | Device power | 允许电源管理低级别的访问。 |
诊断 | Diagnostic | 允许应用程序RW诊断资源。 |
倾倒 | DUMP | 允许应用程序检索系统服务状态转储信息。 |
工厂测试 | Factory test | 运行作为一个工厂测试程序,运行在root用户。只有当设备在制造商测试模式下运行使用。 |
回力 | Force back | 允许程序强行是否在顶一个后退操作。 |
硬件测试 | Hardware test | 允许访问硬件外设。在硬件测试目的。 |
注入事件 | Inject events | 允许应用程序截获用户事件(按键,触摸,轨迹球)到事件流,并提供给任何窗口。 |
安装位置提供 | Install location provider | 允许安装位置信息提供到位置管理器的应用程序。 |
安装软件包 | Install packages | 允许一个程序安装packages。 |
内部系统窗口 | Internal system window | 允许应用程序打开是由系统用户界面的窗口使用。 |
管理应用程序令牌 | Manage application tokens | 允许应用程序管理(创建,销毁,Z-顺序)在窗口管理器应用程序标记。这仅仅是对由系统使用。 |
明确大师 | Master clear | 允许你调用CheckinService.masterClear(),它重置设备设置为出厂默认设置,并删除任何用户数据。 |
修改手机状态 | Modify phone state | 允许修改话机状态 - 对电源,人机接口等,这仅仅是供系统使用。 |
芒格式的文件系统 | Mount format filesystems | 允许可移动存储格式的文件系统。 |
安装卸载文件系统 | Mount unmount filesystems | 允许安装和可移动存储卸载文件系统。 |
读取帧缓冲区 | Read frame buffer | 允许应用程序采取屏幕截图和更多常规的访问帧缓冲数据。 |
阅读日志 | Read logs | 允许应用程序读取低级别的系统日志文件。 |
重启 | Reboot | 要求能够重新启动设备。 |
设置活动守望者 | Set activity watcher | 允许应用程序监控或控制活动在启动全局系统。 |
总是设置完成 | Set always finish | 允许应用程序来控制是否把在后台时活动间接完成。 |
集动画比例 | Set animation scale | 修改全局动画缩放因子。 |
设置调试应用程序 | Set debug app | 配置用于调试的应用程序。 |
设定方向 | Set orientation | 允许设置屏幕的方向(实际上是转动)低级别的访问。 |
设置指针速度 | Set pointer speed | 允许设置指针速度低级别的访问。 |
设置进程限制 | Set process limit | 允许应用程序设置,可以运行(不需要)应用程序进程的最大数量。 |
设置时间 | Set time | 允许应用程序设置系统时间。 |
信号持续的进程 | Signal persistent processes | 允许应用程序请求的信号发送给所有持续的进程。 |
状态栏 | Status bar | 允许打开,关闭或禁用状态栏及图标的应用程序。 |
更新设备统计 | Update device stats | 允许应用程序更新设备统计数据。 |
写入APN设置 | Write apn settings | 允许应用程序写入API设置。 |
写谷歌服务 | Write Google services | 允许应用程序修改谷歌地图服务。 |
编写安全设置 | Write secure settings | 允许应用程序读取或写入安全系统设置。 |