首页 > 编程语言 >【Delphi】Android 程序权限详细说明

【Delphi】Android 程序权限详细说明

时间:2023-02-04 20:44:15浏览次数:42  
标签:app ios 授权 Android 权限 Delphi

转载

https://blog.csdn.net/sensor_WU/article/details/125749637

 

【Delphi】Android 程序权限详细说明
sensor_WU
已于 2022-07-14 07:17:19 修改 739
收藏 1
分类专栏: Delphi 线程 Android 文章标签: Delphi 权限 Android 权限 Android 运行权限 用户确认权限 DelphiAndroid权限
版权
Delphi 线程 同时被 2 个专栏收录
9 篇文章 1 订阅
订阅专栏
Android
11 篇文章 0 订阅
订阅专栏

自从Android 5.1 开始(实际感觉是从 android 8开始的),为了安全有些权限需要动态申请。这些权限还比较多,日后随着Android版本的提升,还有可能添加、变化权限。同时delphi的版本也比较多,不同的版本支持的权限也有些区别,本文就不同Delphi版本和不同android版本相关权限做个自我理解的说明。同时介绍新版本delphi开发Android需要的三种权限处理方法。

一、Delphi 不同版本支持的Android版本情况表:
序号    Delphi 版本    支持Android版本    支持ios版本
1    D11.1(Alexandria)    Android 12,11,10,Pie(9.0),Oreo(8.1)    ios 15
2    D11 (Alexandria)    Android 11    
3    D10.4(Sydney)    Android 10    ios 14
4    D10.3.3 (Android 64-bit support)    Android 10    ios 13
5    D10.3.1    Android 9    ios 12
6    D10.3(RIO)    

 Android 8.1,8(API Level 26)

New Android Permission Model
    ios 12
7    D10.2.3(2018-03-13)    Android 8    ios 11.3
8    D10.2.2    Android 8    ios 11
9    D10.2.1    Android 7    ios 10.3
10    D10.2(Tokyo)    Android 7    ios 10
11    D10.1(Berlin)    

Android 6(API 23)
    ios 10
12    D10.0(Seattle)    

Android 5.0, 5.1 (API Level 21, 22)

Android 4.4(API Level 19)
Android 4.1.x, 4.2.x, 4.3.x(API Levels 16, 17, 18)

Android 4.0.3 and 4.0.4(API Level 15)
    ios 9
13            

二、从 D10.3 开始支持新的 Android 授权模式(New Android Permission Model)

在10.3以前,Android的授权模式就是一种,在编译的时候就确定好了,无需用户在程序运行时动态授权。从10.3以后,授权模式就区分为以下三种
序号    授权类型
1    Normal Uses Permissions(无需动态确认)
2    Dangerous Uses Permissions(需要动态确认:需要用户程序运行时确认)
3    Signature Uses Permissions(无需动态确认)

无需动态确认的权限(install权限),只需要在 Project > Options > Application > Uses Permissions 菜单中勾选对应的权限即可完成授权。

需要动态确认的权限(runtime权限),除了上一步勾选之外,还需要在程序运行的时候提示用户确认,这一步需要通过程序来完成。如果这两步有一步没有成功,则无法获取到对应的权限。

上图是 10.1 的授权截图。只要开发时在配置中授权即可。

这张图为 11.1 的授权截图。需要在程序运行时,让用户授权确认。

三、Permisssion 权限级别说明
级别    解释
normal        normal级别是默认值。低风险的权限采用此级别。在app安装的时候,系统自动赋予此app请求的所有normal权限,而不会征求用户的同意(但是,在安装app之前,用户总是有权选择检查这些权限)。
dangerous        较高风险的权限,此级别的权限意味着,请求权限的app将要访问用户的隐私数据或者控制设备,这可能给用户带来负面影响。
因为dangerous权限会引入潜在的风险,所以系统不会自动赋予此类权限给app。例如,在安装app的时候,会将dangerous权限展示给用户,并请求用户确认。
signature    只有请求权限的app与声明权限的app的签名是一样的时候,系统才会赋予signature权限。
如果签名一致,系统会自动赋予权限,而不会通知用户或者征求用户的同意。

 关于install权限和runtime权限:

install权限(无需动态):安装时权限,是指在安装app的时候,赋予app的权限。normal和signature级别的权限都是安装时权限。不会给用户提示界面,系统自动决定权限的赋予或拒绝。

runtime权限(需要动态):运行时权限,是指在app运行过程中,赋予app的权限。这个过程中,会显示明显的权限授予界面,让用户决定是否授予权限。如果app的targetSdkVersion是22(Lollipop MR1  5.1)及以下,dangerous权限是安装时权限,否则dangerous权限是运行时权限。

总结:

1. 如果你使用Delphi10.3以下版本,就无需考虑动态授权(runtime权限);

2. 如果使用Delphi10.3及以上版本,就需要支持动态授权(runtime权限),这样程序才能正确获取到对应的权限;

3. 如果需要动态授权,除了需要在程序配置页面进行勾选外,还需要程序专门提示用户授权确认,否则程序无法得到授权,对应的功能将不起任何作用,也不会有任何提示,这种情况下你将会是一头雾水(重点 重点 重点) 程序该如何实现呢?参见下一篇《【Delphi】开发Android程序动态申请权限控件》

补充说明:

按照Delphi官方的说法,一些基本的权限(不区分install或者runtime)在创建Delphi工程的时候已经默认勾选了,这些权限包括:

Access coarse location
Access fine location
Call phone
Camera
Internet
Read calendar
Read external storage
Read phone state
Write calendar
Write external storage
但在实际测试中发现,高版本的并没有勾选Read calendar和Write calendar权限。切记:勾选了也需要动态授权。
————————————————
版权声明:本文为CSDN博主「sensor_WU」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sensor_WU/article/details/125749637

标签:app,ios,授权,Android,权限,Delphi
From: https://www.cnblogs.com/xionda/p/17092354.html

相关文章

  • Android 使用腾讯地图定位地点
    Android利用和风天气API显示实时天气-拾一贰叁-博客园(cnblogs.com)之前使用和风天气的SDK在AndroidApp上显示了实时天气情况,但是显示的地点信息是提前设置好的因......
  • Android笔记--内容提供者+Server端+Client端
    什么是内容提供者ContentProvider为App存取内部数据提供的统一的外部接口,让不同的应用之间得以实现数据共享ClientApp端用户输入数据的一端,或者说是用户读取到存储的数......
  • Django内置权限系统源码解读
    前言之前有篇文章​​Django自定义认证系统原理及源码分析解读​​带大家分析解读了Django的认证逻辑,而且我们也知道认证是基础,认证通过之后,用户登录到系统,能看到那些,......
  • delphi类助手helpers,这个NB,省事、大幅提高效率
    1、我们会想要能够对一个数据型别进行扩充,而不想继承类别。2、如果我们想为一个组件类别加入新的方法,为它提供新的功能,而且不想通过继承来做。(如对TFDMEMTable增加方法等......
  • linux系统优化、用户权限
    linux系统优化、用户权限系统优化相关1.了解自己的系统情况cat/etc/redhat-release#简要查看系统情况uname-r/-a/-n/-s/...#2.用户信息创建用户:usera......
  • docker 启动 jenkins 挂载目录权限问题 Permission denied
    通过docker挂载目录的jenkins,查看jenkins日志发现存在一些文件无法写入或者​​Permissiondenied​​这样的异常错误,基本可以判定是文件所有权问题。比如你宿主机挂......
  • Android RecyclerView实现ViewPager效果,用LinearSnapHelper
    文章目录​​LinearSnapHelper效果​​LinearSnapHelper效果SnapHelper是RecyclerView功能的一种拓展,使RecyclerView滑动行为类似ViewPager,无论怎么滑动最终停留在某页正中......
  • Android 动画
    在App中合理地使用动画能够获得友好愉悦的用户体验,Android中的动画有View动画、属性动画、帧动画、布局动画、转场动画等,在5.x以后有又新增了矢量动画,这些动画在平常开发中......
  • 65Android 调试桥 (adb)命令
    Android调试桥(adb)网络连接通过TCP/IP连接设备adbconnect<ip:port>断开已有的TCP/IP连接adbdisconnect<ip:port>监听设备上指定的端口号adbtcpip<port>......
  • Android笔记--Room增删改查
    添加查询删除修改......