代码拉取完成,页面将自动刷新
在Delphi开发Android的过程中,有一种dangerous权限需要动态申请,就是说在程序运行的时候需要用户确认。此时需要开发者编写程序才可以实现,相对比较麻烦。所以就将其开发成一个控件,只需两行代码即可实现权限申请。
Delphi 10.3
Delphi 10.3.1
Delphi 10.4
Delphi 11
Delphi 11.1
Android 8.0
Android 8.x
Android 9.0
Android 10.0
Android 11.0
Component Package Source
Demo
Icon
image
Screenshots
1. 用管理员权限打开Delphi,允许Delphi构建.BPL包到系统文件目录中
2. 打开Component Package Source目录中的Android_Permissions.dpk文件
3. 右键单击Android_Permissions.bpl文件选择Clean
4. 右键单击Android_Permissions.bpl文件选择Install
如果按右键没有出现Install菜单,请检查项目是否选择的是Windows 32-bit
OK👌?
Permissions: 是一个是一个包含所有dangerous权限的枚举列表TPermission = (ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION, ACCESS_BACKGROUND_LOCATION, ACCESS_MEDIA_LOCATION, ... )
Apply: 申请权限方法,无参数,只要设置好Permissions属性,即可执行该方法,系统就会自动申请相关权限;
IsPermissionGranted: 判断某个权限是否已经获取
OnApplyResult: 系统授权结果事件,授权是否成功或者没有成功的原因
procedure(const Sender : TObject; GrantedResult : Boolean; NoGranteds : TArray<string>)
如果授权申请成功, GrantedResult=true,NoGranteds无效,否则 GrantedResult=false,NoGranteds表示没有授权的项目列表
1. 拖放TAndroid_Permission控件(在LW面板上)到Form上;
2. 然后在通过控件属性选择需要的授权项目;
3. 在程序中使用控件的Apply方法即可
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;
1. 为什么使用了Apply后并没有获取到相应的权限?
答:Android的权限分为三种:DANGEROUS、SIGNATURE、STANDARD。
只有DANGEROUS权限才需要程序运行时请求用户确认,其它两种权限都是在开发环境中直接设置。
但是对于DANGEROUS权限,也首先必须在Delphi的开发环境中勾选,然后才能通过程序申请,
否则程序没有任何反应。
2. 对于SIGNATURE、STANDARD这两种权限是否可以动态申请?
答:不可以,对于Delphi来说,必须在开发环境中直接勾选。
3. 这DANGEROUS、SIGNATURE、STANDARD三种权限的区别是什么?
答:参见:https://blog.csdn.net/sensor_WU/article/details/125749637
sensor wu(老吴)
CSDN:http://t.csdn.cn/8rk1k
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。