开发者社区> 请叫我东子> 正文

Android 6.0(API级别23)包括各种系统变化和API的行为变化。

简介:           随着新的特性和功能,Android 6.0(API级别23)包括各种系统变化和API的行为变化。本文强调一些关键的变化,你应该理解和考虑在你的应用程序。
+关注继续查看
          随着新的特性和功能,Android 6.0(API级别23)包括各种系统变化和API的行为变化。本文强调一些关键的变化,你应该理解和考虑在你的应用程序。如果你有以前发表的Android应用程序,请注意,这些变化在影响你的应用程序平台。
       1.运行时的权限

       这个版本引入了一个新的权限模型,用户现在可以在运行时直接管理应用程序的权限。这个模型提供了改进的可见性和控制用户权限,同时简化安装和自动升级过程对于应用程序开发人员。用户可以授予或撤销权限单独安装的应用程序。 在你的应用程序的目标Android 6.0(API级别23)或更高,确保在运行时检查和请求权限。来确定应用程序已经被授予权限,调用新的checkSelfPermission()方法。请求权限,调用新的requestPermissions()方法。即使你的应用程序并不是针对Android 6.0(API级别23),你应该测试你的应用在新的权限模型。有关支持新的权限模型在你的应用程序,使用系统权限。对如何评估对应用程序的影响,看到权限最佳实践。


       2.Doze与App Standby
  这个版本引入了新的节能优化闲置设备和应用程序。这些特性影响所有应用程序确保测试您的应用程序在这些新模式。
  Doze:如果用户拔掉设备,让它静止不动的,与它的屏幕,在一段时间内,该设备进入休睡模式,它试图保持系统处于睡眠状态.在这种模式下,设备周期性地短暂恢复正常操作的时间,以便应用程序同步发生,系统可以执行任何悬而未决的操作。
           App Standby:应用备用允许系统确定应用程序空闲当用户不积极使用它。系统使这一决心当用户不接触一段时间的应用。如果设备不插电,系统禁用网络访问和暂停同步应用程序认为空闲和工作。

       3.Apache HTTP客户端删除
  Android 6.0版本将支持Apache HTTP客户端。如果你的应用程序使用此客户端和目标Android 2.3(API级别9)或更高,使用HttpURLConnection类。
  这个API是更有效的,因为它通过透明的压缩和响应缓存,减少网络使用和减少能耗。继续使用Apache HTTP api,你必须首先声明以下编译时依赖项。gradle文件:
  android {
           useLibrary 'org.apache.http.legacy'

           }


       4.BoringSSL

  Android是BoringSSL远离OpenSSL库。如果你在你的应用程序,使用Android NDK对加密库不是不联系NDK API的一部分,比如libcrypto。所以,libssl.so。这些库不是公共api, 并可能改变或打破跨版本和设备不另行通知。此外,你可能会暴露自己的安全漏洞。相反,修改您的本机代码调用Java加密api通过JNI或静态链接对您选择的密码库。


       5.访问硬件标识符
  为用户提供更大的数据保护,开始在本版本中,Android将编程访问设备的本地硬件标识符使用wi - fi和蓝牙api的应用程序。BluetoothAdapter.getAddress                                         WifiInfo.getMacAddress()和()方法返回02:00:00:00:00:00恒定值。
       访问硬件标识符附近的外部设备通过蓝牙和无线网络扫描,应用程序必须现在ACCESS_FINE_LOCATION或者ACCESS_COARSE_LOCATION权限:
       WifiManager.getScanResults()
        BluetoothDevice.ACTION_FOUND
        BluetoothLeScanner.startScan()

        注意:当设备运行Android 6.0(API级别23)发起一个背景wi - fi或蓝牙扫描,操作是可见的外部设备,来自一个随机的MAC地址。


       6.Notifications
  这个版本删除Notification.setLatestEventInfo()方法。使用通知。构建器类来构建通知。反复更新通知,通知重用。构建器实例。调用build()方法来获取更新通知实例。
       亚行壳dumpsys通知命令不再打印出你的通知文本。使用亚行壳dumpsys通知——noredact命令而不是打印的文本通知对象。
        7.AudioManager Changes

设置音量直接或通过AudioManager静音特定流类是不再支持。setStreamSolo()方法是弃用,你应该调用requestAudioFocus()方法。同样,setStreamMute()方法是弃用;          相反,称为adjustStreamVolume()方法并传递价值ADJUST_MUTE或者ADJUST_UNMUTE的方向


        8.Text Selection
当用户选择文本在你的应用程序,现在您可以显示文本选择行为,如剪切、复制和粘贴在一个浮动工具栏。用户交互实现类似于上下文操作栏,使所述上下文动作模式为个人观点。
         实现浮动工具栏的文本选择,在你现有的应用程序做以下更改:
        在你的视图或活动对象,改变你ActionMode startActionMode打来(回调)startActionMode(回调,ActionMode.TYPE_FLOATING)。
         把你现有的ActionMode的实现。回调,让它延长ActionMode。Callback2代替。
         覆盖onGetContentRect()方法提供的坐标内容矩形对象(如文本选择矩形)的观点。
       如果矩形定位不再是有效的,这是唯一的元素失效,称之为invalidateContentRect()方法。
        如果您使用的是Android支持库版本22.2,请注意,浮动工具栏不向后兼容和appcompat需要控制ActionMode默认对象。
这可以防止浮动工具栏显示。以AppCompatActivity启用ActionMode支持,叫getDelegate(),然后调用setHandleNativeActionModesEnabled()
返回的AppCompatDelegate对象和输入参数设置为false。这个调用返回控制ActionMode对象的框架。在设备运行Android 6.0(API级别23),

允许框架支持ActionBar或浮动工具栏模式,在设备上运行Android 5.1(API级别22)或更低,只有ActionBar模式支持。


        9.Browser Bookmark Changes
这个版本将支持全球书签。android.provider.Browser.getAllBookmarks()和android.provider.Browser.saveBookmark()方法现在移除。
同样,READ_HISTORY_BOOKMARKS,WRITE_HISTORY_BOOKMARKS权限删除。

如果你的应用目标Android 6.0(API级别23)或更高,不从全球供应商访问书签书签或使用权限。相反,应用程序应该在内部存储书签数据。


10.Android Keystore Changes
有了这个版本,安卓不再支持DSA密钥库提供者。ECDSA仍支持。
        键,不需要加密不再禁用安全锁定屏幕或重置时删除(例如,由用户或设备管理员) 。keys需要加密在这些事件将被删除。


        11.Wi-Fi and Networking Changes
这个版本引入了以下行为改变无线和网络api。
        您的应用程序现在可以改变WifiConfiguration对象的状态只有在您创建这些对象。你不允许修改或删除WifiConfiguration对象创建的用户或其他应用程序。
        以前,如果一个应用程序迫使设备连接到一个特定的wi - fi网络通过使用enableNetwork与disableAllOthers = true()设置,设备与其他诸如蜂窝数据网络。
在本版本中,设备不再从其他网络断开。如果你的应用的targetSdkVersion“20”或更低,这是固定在选定的wi - fi网络。

        如果你的应用的targetSdkVersion“21”或更高,使用multinetwork api(比如openConnection(),bindSocket(),和新bindProcessToNetwork()方法),以确保其网络流量所选网络上发送。


        12.Camera Service Changes
在本版本中,该模型用于访问共享资源在相机服务改变了从以前的“先来先服务”访问模型一个高优先级进程支持的访问模型。更改服务行为包括:
       进入相机子系统资源,包括打开和配置一个摄像头设备,获得基于客户端应用程序的“优先级”的过程。应用程序进程和用户可见或前台活动通常是给定一个高优先级,使相机资源获取和使用更可靠。
       活跃相机客户低优先级的应用可能会“驱逐”当一个更高的优先级应用程序试图使用相机。弃用的摄像头API,这导致onError驱逐客户机()被调用。在Camera2 API,它导致onDisconnected驱逐客户机()被调用。
与合适的相机硬件设备上,单独的应用程序进程能够独立开放和同时使用独立的摄像头设备。然而,多进程的用例,同时访问造成重大降解性能或功能的打开摄像头设备,现在相机服务发现和不允许的。这种变化可能导致“驱逐”为低优先级的客户,即使在没有其他应用直接尝试访问相同的摄像头设备。
改变当前用户原因活跃相机的客户应用程序由以前的用户帐户被驱逐。进入相机是有限的用户配置文件属于当前用户设备。在实践中,这意味着一个“客人”帐户,例如,将无法离开运行过程时使用相机子系统用户切换到一个不同的帐户。


       13.Runtime
  14.APK Validation
  apk的平台现在执行更严格的验证。APK被认为是腐败的,如果一个文件在清单中声明,而不是出现在APK文件本身。APK必须续签如果任何内容删除。
  
  
  
  
  详细可见:https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apk-validation

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android系统预装Chrome并自定义主页
Android系统预装Chrome并自定义主页
37 0
Android MTK平台 客制化系统来电界面(屏蔽 InCallUI 提供接口给客户自行展示来电去电页面)
Android MTK平台 客制化系统来电界面(屏蔽 InCallUI 提供接口给客户自行展示来电去电页面)
28 0
Android | 通过WindowInsetsController设置系统栏颜色、Behavior、显示隐藏等
两种方式可以引入`WindowInsetsController`,一种直接通过`API`的`val controller = window.decorView.windowInsetsController`获取,注意该方法在`API30`及以上才有
55 0
性能测试 基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程
性能测试 基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程
32 0
想知道Android手机怎么远程登录到系统后台吗?看这里
想知道Android手机怎么远程登录到系统后台吗?看这里
66 0
你想在旧Android手机上装Linux系统吗?看这里
你想在旧Android手机上装Linux系统吗?看这里
188 0
Android程序设计 大作业:基于安卓的校园生活服务系统的设计与实现
Android程序设计 大作业:基于安卓的校园生活服务系统的设计与实现
200 0
android体系课-系统启动流程-之zygote进程启动过程源码分析
笔者刚开始学习Android的时候也和大部分同学一样,只会使用一些应用层面的知识,对于一些比较常见的开源框架如<mark>RxJava</mark>,<mark>OkHttp</mark>,<mark>Retrofit</mark>,以及后来谷歌推出的<mark>协程</mark>等,都只在使用层面,对于他们<mark>内部原理</mark>,基本没有去了解觉得够用就可以了,又比如Activity,Service等四大组件的使用原理,系统开机过程,Launcher启动过程等知之甚少,知其然而不知其所以然,结果就是出现某些问题,不知道从哪里找原因,只能依赖万能的百度,但是百度看多了,你会发现自己
89 0
android体系课-系统启动流程-之SystemServer启动过程源码分析
笔者刚开始学习Android的时候也和大部分同学一样,只会使用一些应用层面的知识,对于一些比较常见的开源框架如<mark>RxJava</mark>,<mark>OkHttp</mark>,<mark>Retrofit</mark>,以及后来谷歌推出的<mark>协程</mark>等,都只在使用层面,对于他们<mark>内部原理</mark>,基本没有去了解觉得够用就可以了,又比如Activity,Service等四大组件的使用原理,系统开机过程,Launcher启动过程等知之甚少,知其然而不知其所以然,结果就是出现某些问题,不知道从哪里找原因,只能依赖万能的百度,但是百度看多了,你会发现自己
61 0
“framework必会”系列:Android Input系统(一)事件读取机制
曾经在开发的很长一段时间内,笔者对点击事件的认知只存在于自定义View中的`onTouchEvent`等方法的处理。 后来慢慢的接触到`Android的事件分发机制`,但也只是在**Activity->ViewGroup->View**层面的分发逻辑
105 0
“framework必会”系列:Android Input系统(二)事件分发机制
对于目前应用开发已经饱和的大环境下,作为一个多年Android开发,逼迫我们Android开发往更深层次的framework层走,于是就有了这么个系列
163 0
RK356X Android 11 增加自定义系统服务调用失败
RK356X Android 11 增加自定义系统服务调用失败
127 0
Android 修改系统时区导致SimpleDateFormat无法输出正确时间
Android 修改系统时区导致SimpleDateFormat无法输出正确时间
56 0
Android 8.1 系统锁屏显示流程整理
Android 8.1 系统锁屏显示流程整理
75 0
+关注
请叫我东子
文章
问答
视频
相关电子书
更多
蚂蚁聚宝Android秒级编译——Freeline
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关镜像