【Delphi】开发Android程序动态申请权限控件

在看这篇文章之前,建议先了解什么是动态申请权限,参见作者《【Delphi】Android 程序权限详细说明》。明白了动态申请权限后,就需要开发动态申请权限程序,为了方便,我们把动态申请权限的程序封装成一个控件,只需要两条语句即可实现动态申请权限。

一、需要动态申请的权限(dangerous)列表:官方文档

序号权限说明API
1ACCESS_COARSE_LOCATION应用程序访问大致位置1
2ACCESS_FINE_LOCATION应用程序访问精确位置1
3ACCESS_BACKGROUND_LOCATION(*)允许程序后台获取位置信息,如果要这个权限,必须首先请求好ACCESS_COARSE_LOCATION或者ACCESS_FINE_LOCATION权限29
4ACCESS_MEDIA_LOCATION允许应用从媒体收藏中读取未知信息29
5ACCESS_MOCK_LOCATION(obsolete)似乎是关于GPS位置信息的权限,当前官方文档已经查询不到,弃用
6ACTIVITY_RECOGNITION获取设备中的健身运动信息29
7ADD_VOICEMAILAllows an application to add voicemails into the system14
8ANSWER_PHONE_CALLS接听或挂断电话、监听通话状态26
9AUTHENTICATE_ACCOUNTS(obsolete)目前官方已弃用
10BODY_SENSORS获取您的生命体征相关数据20
11BODY_SENSORS_BACKGROUND后台获取您的生命体征相关数据33
12CALL_PHONE直接拨打电话1
13CAMERA拍摄照片和录制视频1
14CONYINUE_A_CALL_STARTED_IN_ANOTHER_APP目前官方已弃用
15GET_ACCOUNTS获取手机账户1
16MANAGE_ACCOUNTS(obsolete)目前官方已弃用
17PROCESS_OUTGOING_CALLS目前用法从API29开始有改变:接听或挂断电话、监听通话状态1、29
18READ_CALENDAR读取日历中的日程信息1
19READ_CALL_LOG读取通话记录16
20READ_CONTACTS读取联系人信息1
21READ_EXTERNAL_STORAGE读取设备上的照片及文件16
22READ_HISTORY_BOOKMARKS(obsolete)目前官方已弃用
23READ_PHONE_NUMBERS获取当前手机号码26
24READ_PHONE_STATE获取手机状态,比如当前可否拨打电话1
25READ_SMS读取短信权限1
26RECEIVE_MMS允许程序接收MMS消息1
27RECEIVE_SMS允许程序接收短信1
28RECEIVE_WAP_PUSH允许程序接收WAP推送消息1
29RECORD_AUDIO进行通话录音或者本地录音1
30SEND_SMS发送短信权限1
31USE_SIP使用SIP视频服务9
32WRITE_CALENDAR读写入日历中日程信息1
33WRITE_CALL_LOG修改通话记录16
34WRITE_CONTACTS修改联系人信息1
35WRITE_EXTERNAL_STORAGE读写设备上的照片及文件4

二、控件使用限制:

        控件只能支持Delphi 10.3及以上版本,因为10.3以下版本Delphi不支持动态申请权限。如果你使用的是10.3及以上版本,请下载本控件安装使用。另外如果要开发android 8 及以上的APP,建议至少升级到Delphi的10.3版本。

三、控件介绍

1. 控件属性:

序号属性说明
1Permissions

是一个包含所有dangerous权限的枚举列表

TPermission = (
    ACCESS_COARSE_LOCATION,     
    ACCESS_FINE_LOCATION,     
    ACCESS_BACKGROUND_LOCATION,
    ACCESS_MEDIA_LOCATION,  

     ...

   )

需要什么权限就选择什么权限。

2OnApplyResult

这是一个事件,申请完权限后系统批复结果通知回调事件。

procedure(const Sender : TObject; GrantedResult : Boolean; NoGranteds : TArray<string>)

权限获得成功:GrantedResult = True,NoGranteds 无意义

权限获得失败:GrantedResult = False,NoGranteds 表示失败的权限名称字符串列表

2. 控件方法:

序号方法说明
1Apply申请权限,设置需要的权限属性Permissions值之后,就可以通过这个方法申请权限
2IsPermissionGranted

判断程序当前是否已经获得某个权限。

function IsPermissionGranted(APermission : string): Boolean;

APermission 表示权限名称。

如果权限存在,结果为True,否则为False

3.  使用方法及源文件下载,请移步Gitee。

  var
    Android_Permission : TAndroid_Permission;
  try
    Android_Permission := TAndroid_Permission.Create(nil);
    Android_Permission.Permissions := Android_Permission.Permissions + [CAMERA];
    //....
    Android_Permission.Apply;
  finally
    Android_Permission.Free;
  end;

4. Gitee 开源地址:(Delphi)Android 权限动态申请控件: 在Delphi开发Android的过程中,有一种dangerous权限需要动态申请,就是说在程序运行的时候需要用户确认。此时需要开发者编写程序才可以实现,相对比较麻烦。所以就将其开发成一个控件,只需两行代码即可实现权限申请。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海纳老吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值