1.3 隐私相关
后台应用访问受限
- 您的应用不能访问麦克风或摄像头。
- 使用连续报告模式的传感器(例如加速度计和陀螺仪)不会接收事件。
- 使用变化或一次性报告模式的传感器不会接收事件。
如果您的应用需要在运行 Android 9 的设备上检测传感器事件,请使用前台服务。
权限组变更
Android P 引入 CALL_LOG 权限组并将 READ_CALL_LOG、WRITE_CALL_LOG 和 PROCESS_OUTGOING_CALLS 权限移入该组。 在之前的 Android 版本中,这些权限位于 PHONE 权限组
wifi扫描权限变更:
Android 8.0和Android 8.1:
成功调用 WifiManager.getScanResults()) 需要以下任何一项权限:
- ACCESS_FINE_LOCATION
- ACCESS_COARSE_LOCATION
- CHANGE_WIFI_STATE
如果调用应用程序没有任何这些权限,则调用将失败并显示 SecurityException。
Android 9及更高版本:
成功调用 WifiManager.startScan()) 需要满足以下所有条件:
- 您的应用具有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限。
- 您的应用具有 CHANGE_WIFI_STATE 权限。
成功调用 WifiManager.getScanResults()) 需要满足以下所有条件:
- 您的应用具有 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限。
- 您的应用具有 ACCESS_WIFI_STATE 权限。
- 设备上启用了位置服务(在“设置”>“位置”下)。
如果调用应用程序不满足所有这些要求,则调用将失败并显示 SecurityException。
类似的限制也适用于 getConnectionInfo()) 函数,该函数返回描述当前 Wi-Fi 连接的 WifiInfo 对象。 如果调用应用具有以下权限,则只能使用该对象的函数来检索 SSID 和 BSSID 值:
- ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION
- ACCESS_WIFI_STATE 检索 SSID 或 BSSID 还需要在设备上启用位置服务(在 Settings > Location 下)。
使用证书的主机名验证
在 RFC 2818
中,回退到 CN 已被弃用。因此,Android 不再回退到使用 CN。 要验证主机名,服务器必须出示具有匹配 SAN 的证书。 不包含与主机名匹配的 SAN 的证书不再被信任
1.4 其他限制
1.4.1 Apache HTTP 客户端弃用影响采用非标准 ClassLoader 的应用
其实,自 Android 6 发布,就移除了对 Apache HTTP 客户端的支持,而推荐改用 HttpURLConnection 类,因为它可以通过透明压缩和响应缓存减少网络使用,并可最大限度降低耗电量, 从此我们变习惯这样使用 Apache HTTP API,即在 build.geadle
添加:
android {
useLibrary ‘org.apache.http.legacy’
}
androd P 开始,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用。
这句话怎么理解,也就是说默认 Apache HTTP API 不可用,即使在build.geadle
申明了该库。 这种说法分两种情况: 运行在 android P 设备上的应用:
Target 28
,默认会报 NoClassDefFoundError,因为此库被禁止使用,要继续使用 Apache HTTP 客户端,以 Android 9 及更高版本为目标的应用可以向其AndroidManifest.xml
添加以下内容:
Target < 28
可以和android 6.0
一致。
bootclasspath 是 linux 系统变量,是系统在启动时会预先加载的类,以提高系统性能,这是 小米 MIX(7.0)
上的 bootclasspath 变量:
/system/bin/sh: /system/framework/core-oj.jar:/system/framework/core-libart.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/apache-xml.jar:/system/framework/org.apache.http.legacy.boot.jar:/system/framework/v