apicloud apicloud

注册
查看: 25537|回复: 249

[APP开发技巧] APP动态权限及Android平台targetSdkVersion设置

 

主题:
16
帖子:
5966
云币:
4590

[APP开发技巧] APP动态权限及Android平台targetSdkVersion设置

 
25537 249 | 发表于 2018-8-27 12:52:05 |阅读模式 | |
本帖最后由 常山赵子云 于 2019-8-30 13:06 编辑

友情提醒:所有看这个帖子的同学,不管你是大牛还是小白,建议花5分钟,仔细从头到尾完整的阅读一遍下面的内容,再动手,否则你可能会多花N个5分钟来排查你遇到的新问题。


--关于Android动态权限和targetSdkVersion背景:

       targetSdkVersion:自2018年11月开始,GooglePlay以及国内大部分应用市场要求APP编译目标SDK必须为26及以上,否则不予提交审核;有许多已有APP转到APICloud开发后,因targetSdkVersion降级而导致无法覆盖安装;

       动态权限:Android自系统6.0开始,提供动态权限机制,对于敏感权限(存储,定位,录音,拍照,录像等),需要在APP运行过程中动态向用户申请,这就和IOS系统的权限使用体验保持一致了(IOS一直以来就是动态权限)。

    因此我们统一了Android和IOS两个平台的动态权限操作,提供两个API:hasPermission | requestPermission

    在Android上使用动态权限,要求APP编译的目标SDK(即targetSdkVersion)为23及以上(对应为android6.0及以上系统),22及以下系统会执行缺省处理(手机厂商也可能定制处理),APICloud为满足更普遍的开发需求,默认配置targetSdkVersion为22,即权限走系统缺省处理。

--现介绍如何自定义编译targetSdkVersion值以及使用动态动态权限

1、下载附件中的manifest.xml,将其中的targetSdkVersion更新为目标值,例如26;
2、将manifest.xml置于你的/项目代码/res/目录下(widget/res/manifest.xml);
3、将你的app代码中所有涉及到需要动态权限的操作,按照附件中的代码,改造一遍;
4、提交代码;
5、云编译界面勾选APP所需的权限;
6、使用升级环境编译 即可。

--注意:当你设置的targetSdkVersion大于等于23时,即开启了动态权限,如果你的APP带有获取IMEI,定位,录音,拍照,录像等敏感功能时(所有权限见文档),必须使用动态权限机制,先判断是否具有该功能操作权限,再进行操作,如果不具备相应的权限,对应的功能是失效的,也可能导致APP崩溃

为保证动态权限尽可能适配更多厂商的手机以及顺利上线Google Play,targetSdkVersion目前推荐设置为26.

补充:当你设置的targetSdkVersion大于等于23时,如果是编译自定义loader,安装到手机后,需要先在设置中给应用打开存储空间权限。否则,WiFi同步后,loader无法正常加载代码。


本帖子中包含更多资源    您需要 登录 才可以下载或查看,没有帐号?立即注册

1

查看全部评分

驾校小白

UID:795373

主题:
1
帖子:
2
云币:
3
发表于 2019-7-9 17:26:38 |
如果把存储权限关了  软件不能正常打开  怎么解决呢

驾校小白

UID:378947

主题:
19
帖子:
50
云币:
84
发表于 2018-9-5 15:44:31 |
本帖最后由 Jason526 于 2018-9-5 15:46 编辑

如果添加这个文件以后,在云编译自定义loader后,无法同步,提示同步成功,但是打开依然空白页面。控制台提示的信息如下:Using unescaped '#' characters in a data URI body is deprecated and will be removed in M68, around July 2018. Please use '%23' instead. See https://www.chromestatus.com/features/5656049583390720 for more details. at JsRuntime : 0
疑问:是否不支持自定义loader使用?

主题:
93
帖子:
326
云币:
320

女朋友强者王者不觉明厉APICloud粉丝装逼侠

发表于 2019-8-7 09:37:17 |
之前都是没有设置api.hasPermission  api.requestPermission 这个的,直接在云编译上打钩就行,现在如果设置了targetSdkVersion为26的话,需要在代码中添加api.hasPermission  api.requestPermission其中的一个给权限吗?还是说添加之后只云编译打勾就行?还是说两者都要?

版主

UID:83211

主题:
148
帖子:
6497
云币:
35137

APICloud粉丝端午节模块开发者一周年你吃屎!女朋友SB侠APICloud大会专属勋章捣蛋鬼

发表于 2018-8-27 13:06:05 |
支持,,棒棒滴。。。。。

主题:
113
帖子:
596
云币:
642
发表于 2018-8-27 13:41:02 |
终于可以解决问题了,赞

马路杀手

UID:153610

主题:
78
帖子:
294
云币:
357
发表于 2018-8-27 19:25:40 |
非常感谢。官方承诺1个月内解决该问题,但自为提出该问题到现在仅20天,即解决了。
再次感谢

主题:
220
帖子:
1558
云币:
4732

APICloud粉丝端午节APICloud毕业勋章APICloud骨灰粉一周年中秋节社会摇你吃屎!首长好!托马斯全旋女朋友足球狗儿童节快乐

发表于 2018-8-28 14:54:16 |
APP、小程序、公众号、企业官网项目合作请点击QQ:1424445608

新手上路

UID:632341

主题:
25
帖子:
62
云币:
98
发表于 2018-9-3 16:26:14 |
安卓系统出了个问题,安卓系统下授权应该是granted = ture,,但是在未授权返回也是granted = ture,为啥我吧这个文件引入到项目,还是老样子,完全按照你得方式去执行了...

主题:
16
帖子:
5966
云币:
4590
 楼主| 发表于 2018-9-3 20:36:09 |
java_chen 发表于 2018-9-3 16:26
安卓系统出了个问题,安卓系统下授权应该是granted = ture,,但是在未授权返回也是granted = ture,为啥我 ...

返回ture就是就是有这个权限,其他的不用关心。

驾校小白

UID:468147

主题:
12
帖子:
31
云币:
152

APICloud粉丝女朋友强者王者不觉明厉

发表于 2018-9-6 11:13:34 |
apk包仍然不能用啊   现在应用市场上的是23 我现在包提不上去  怎么解决啊

驾校小白

UID:468147

主题:
12
帖子:
31
云币:
152

APICloud粉丝女朋友强者王者不觉明厉

发表于 2018-9-6 11:15:13 |
有没有人啊 帮我解决一下问题    这个targetsdk为啥就不能改呢 好麻烦啊
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表