Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

Android6.0之后的权限机制对App开发的影响

$
0
0
随着Android系统的更新换代,每次重大更新的方面也逐步扩展,从4.*主要是增强功能,到5.*主要是美化界面,到6.*主要提高系统安全性,再到7.*和8.*主要支撑各种大屏设备,因此开发者需要对每个大版本的Android重新进行适配。其中6.*主要影响开发工作的升级包括权限管理和休眠模式。

对于权限管理,原本开发者只要在AndroidManifest.xml中声明相关权限,App安装完成之后即可默认获得这些权限。但是6.0引入了新的运行时权限管理机制,即使开发者实现已经声明App的权限,Android在App初次启动之时,仍会提示用户是否允许该App开启相关功能。倘若用户不同意App获得某些权限,毫无疑问App在运行过程中就可能无法正常工作。

对于休眠模式,即当手机屏幕关闭的时候,系统会自动进入休眠模式,这样原本正在运行的App将进入挂起模式,不能再进行访问网络等常用操作。当然为了保证App不被完全挂死,系统也会定时退出休眠模式,好比青蛙从冬眠之中苏醒过来,在苏醒期间,系统允许挂起的App重新恢复运行,继续先前设定好的任务。可是这个苏醒期是短暂的(通常只有几秒),一旦苏醒期结束,系统又重新进入休眠模式,于是那些App再次挂起,等待下次苏醒期的到来,如此往复。当然,只要手机恢复亮屏,比如用户按下电源键、用户给手机插上电源、手机接到来电等等,系统便自动退出休眠模式,所有挂起的App都会恢复正常运转。

下面逐个说明一下Android6.0的权限管理和休眠模式给App开发带来的影响,注意这些影响可对照《Android Studio开发实战:从零基础到App上线》一书的相应章节:
1、App的SD卡访问权限可能会被用户关闭,导致App无法正常读写SD卡。这点影响《Android Studio开发实战:从零基础到App上线》一书第4章的“4.3 SD卡文件操作”和“4.5 实战项目:购物车”。手机上查看App是否开启存储卡访问功能的界面如下图所示:


2、手机在休眠期间,原本在系统闹钟服务AlarmManager中设定好的定时任务,即使定时的时刻到达,也要等到苏醒期间才会得到执行。如果一定要在休眠期唤醒闹钟,就得调用setAndAllowWhileIdle代替set方法,或者调用setExactAndAllowWhileIdle代替setExact方法。
这点影响《Android Studio开发实战:从零基础到App上线》一书第5章的“5.5.2 定时器AlarmManager”和“5.6 实战项目:日历/日程表”。

3、Android6.0之后,App如果通过jni接口调用了so库,则这个so库必须把相关库编译进去,因为系统将不允许App访问系统库。具体到编码工作,只能在build.gradle中采用externalNativeBuild方式编译jni工程,即在jni目录下提供专门的Android.mk编译文件,由该mk文件配置jni文件的编译规则;倘若在build.gradle的defaultConfig节点下补充ndk的编译说明,则编译出来的so文件无法在Android6.0上正常调用。这点影响《Android Studio开发实战:从零基础到App上线》一书第14章的“14.2 JNI开发”和“14.4 实战项目:WIFI共享器”。

4、Android6.0对蓝牙功能的校验也变严格了,即使已经在AndroidManifest.xml声明蓝牙的相关权限如BLUETOOTH_ADMIN和BLUETOOTH,App也不能正常检测到附近的蓝牙设备。解决办法是在AndroidManifest.xml中增加下面两个权限声明:
    <!-- Android6.0 蓝牙搜索不到设备,需要补充下面两个权限 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
这点影响《Android Studio开发实战:从零基础到App上线》一书第14章的“14.3.2 蓝牙BlueTooth”。



点此查看Android开发笔记的完整目录



作者:aqi00 发表于2017/7/31 9:53:34 原文链接
阅读:0 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>