设为首页 加入收藏

TOP

Android 8.0 功能和 API(六)
2017-10-13 10:36:57 】 浏览:10483
Tags:Android 8.0 功能和 API
scription.StrokeDescription 构造函数中的最后一个参数 willContinue,指定属于同一设定手势的笔划的顺序。

安全性与隐私

权限

Android 8.0 引入了多个与电话有关的新权限:

  • ANSWER_PHONE_CALLS 允许您的应用通过编程方式接听呼入电话。要在您的应用中处理呼入电话,您可以使用 acceptRingingCall() 函数。
  • READ_PHONE_NUMBERS 权限允许您的应用读取设备中存储的电话号码。

这些权限均被划分为危险类别,属于 PHONE 权限组。

新的帐号访问和 Discovery API

Android 8.0 对应用访问用户帐号的方式引入多项改进。对于由身份验证器管理的帐号,身份验证器在决定对应用隐藏帐号还是显示帐号时可以使用自己的策略。Android 系统跟踪可以访问特定帐号的应用。

在以前的 Android 版本中,想要跟踪用户帐号列表的应用必须获取有关所有帐号的更新,包括具有不相关类型的帐号。Android 8.0 添加了 addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, java.lang.String[]) 函数,其允许应用指定应接收帐号变更的帐号类型列表。

API 变更

AccountManager 提供六个新函数以帮助身份验证器管理哪些应用可以查看某个帐号:

  • setAccountVisibility(android.accounts.Account, java.lang.String, int):针对特定用户帐号和软件包组合设置可见性级别。
  • getAccountVisibility(android.accounts.Account, java.lang.String):获取特定用户帐号和软件包组合的可见性级别。
  • getAccountsAndVisibilityForPackage(java.lang.String, java.lang.String):允许身份验证器获取帐号和给定软件包的可见性级别。
  • getPackagesAndVisibilityForAccount(android.accounts.Account):允许身份验证器获取存储的给定帐号的可见性值。
  • addAccountExplicitly(android.accounts.Account, java.lang.String, android.os.Bundle, java.util.Map
  • addOnAccountsUpdatedListener(android.accounts.OnAccountsUpdateListener, android.os.Handler, boolean, java.lang.String[]):将 OnAccountsUpdateListener 侦听器添加到 AccountManager 对象。无论设备上的帐号列表何时发生变化,系统都将调用此侦听器。

Android 8.0 引入两个特殊的软件包名称值,以使用 setAccountVisibility(android.accounts.Account, java.lang.String, int) 函数指定未设置的应用的可见性级别。PACKAGE_NAME_KEY_LEGACY_VISIBLE 可见性值应用于具有 GET_ACCOUNTS 权限的应用,并且其目标 Android 版本低于 Android 8.0,或其签名与针对任意 Android 版本的身份验证器匹配。PACKAGE_NAME_KEY_LEGACY_NOT_VISIBLE 为之前未设置的应用提供默认的可见性值,对于此类应用,PACKAGE_NAME_KEY_LEGACY_VISIBLE 不适用。

Google Safe Browsing API

WebView 类现在添加了一个 Safe Browsing API 来增强网络浏览的安全性。如需了解详细信息,请参阅 Google Safe Browsing API

测试

仪器测试

Android 8.0 为应用的仪器测试提供以下几项额外支持。

针对非默认应用进程运行

现在,您可以指定针对您的应用的默认进程以外的进程运行特定仪器测试。如果您的应用包含多个在不同进程中运行的操作组件,此配置非常有用。

要定义非默认进程仪器测试,请导航至您的清单文件,然后导航至所需的

  • 特定进程的名称。
  • 以逗号分隔的进程名称列表。
  • 通配符("*"),允许针对任何执行 android:targetPackage 属性中指定的软件包中的代码的已启动进程运行仪器测试。

在执行仪器测试时,您可以通过调用 getProcessName() 检查正在测试哪个进程。

在测试过程中报告结果

现在,通过调用 addResults(),您可以在执行仪器测试时(而不用等到测试后)报告结果。

用于测试的模拟 Intent

为了更轻松地为您应用的操作组件创建隔离、独立的界面测试,Android 8.0 引入了 onStartActivity() 函数。要处理您的测试类调用的特定 intent,您可以在 Instrumentation.ActivityMonitor 类的自定义子类中替换此函数。

当您的测试类调用 intent 时,该函数将返回一个存根 Instrumentation.ActivityResult 对象,而不是执行 intent 本身。通过在您的测试中使用这种模拟 intent 逻辑,您可以侧重于自己的操作组件如何准备和处理您传递到不同操作组件或完全不同的应用中的 intent。

行时和工具

平台优化

Android 8.0 为平台引入了运行时优化和其他优化,这些优化将带来多项性能改进。这些优化包括并发压缩垃圾回收、更有效的内存利用和代码区域。

它们可以加快启动时间,并为 OS 和应用带来更好的性能。

更新的 Java 支持

Android 8.0 添加了对更多 OpenJDK Java API 的支持:

  • OpenJDK 8 中的 java.time。
  • OpenJDK 7 中的 java.nio.file 和 java.lang.invoke。
    要详细了解这些新添加的软件包中的类和函数,请参阅 API 参考文档。

如果您想要在 Android Studio 中使用 Java 8 语言功能,您应下载最新的预览版本

更新的 ICU4J Android Framework API

Android 8.0 扩展了 ICU4J Android 框架 API—,它是 ICU4J API 的子集—,供应用开发者在 android.icu 软件包中使用。这些 API 使用设备上具有的本地化数据。因此,您无需在 APK 中编译 ICU4J 库,从而减少 APK 占用空间。

表 1. Android 中使用的 ICU、CLDR 和 Unicode 版本。

Android API 级别 ICU 版本 CLDR 版本 Unicode 版本
Android 7.0(API 级别 24) Android 7.1(API 级别 25) 56 28
Android 8.0 58.2 30.0.3 9.0

Android 企业版

已为运行 Android 8.0 的设备引入新的企业功能和 API。重要功能包括如下:

  • 完全托管
首页 上一页 3 4 5 6 7 下一页 尾页 6/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android项目实战(三十五):多渠.. 下一篇react-native android打包签名rel..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目