Android6.0~9.0适配

1.前言

 因为最近在写2个新app,遇到一些适配问题,所以我在这里总结了一下,分享给大家。

2.安卓6.0的适配

 6.0权限申请

 

分组

名字

分割线

PHONE

android.permission.READ_PHONE_STATE

 

 

android.permission.CALL_PHONE

 

 

android.permission.READ_CALL_LOG

 

 

android.permission.ADD_VOICEMAIL

 

 

android.permission.WRITE_CALL_LOG

 

 

android.permission.USE_SIP

 

 

android.permission.PROCESS_OUTGOING_CALLS

 

CALENDAR

android.permission.READ_CALENDAR

 

 

android.permission.WRITE_CALENDAR

 

CAMERA

android.permission.CAMERA

 

CONTACTS

android.permission.READ_CONTACTS

 

 

android.permission.WRITE_CONTACTS

 

 

android.permission.GET_ACCOUNTS

 

LOCATION

android.permission.ACCESS_FINE_LOCATION

 

 

android.permission.ACCESS_COARSE_LOCATION

 

MICROPHONE

android.permission.RECORD_AUDIO

 

SENSORS

android.permission.BODY_SENSORS

 

SMS

android.permission.SEND_SMS

 

 

android.permission.RECEIVE_SMS

 

 

android.permission.READ_SMS

 

 

android.permission.RECEIVE_WAP_PUSH

 

 

android.permission.RECEIVE_MMS

 

STORAGE

android.permission.READ_EXTERNAL_STORAGE

 

 

android.permission.WRITE_EXTERNAL_STORAGE

 

对于同一组内的权限,只要有一个被同意,其他的都会被同意。

3.Android 7.0的适配

3.1 应用间共享文件

targetSdkVersion大于等于的24App中,但是我们没有去适配7.0。那么在调用安装页面,或修改用户头像操作时,就会失败。那么就需要你去适配7.0或是将targetSdkVersion改为24以下(不推荐)。适配的方法这里就不细讲,大家可以看鸿洋大神的 Android 7.0 行为变更 通过FileProvider在应用间共享文件这篇文章

3.2 APK signature scheme v2

Android 7.0 引入一项新的应用签名方案 APK Signature Scheme v2,它能提供更快的应用安装时间和更多针对未授权 APK 文件更改的保护。在默认情况下,Android Studio 2.2 Android Plugin for Gradle 2.2 会使用 APK Signature Scheme v2 和传统签名方案来签署您的应用

 

1)只勾选v1签名就是传统方案签署,但是在7.0上不会使用V2安全的验证方式。

2)只勾选V2签名7.0以下会显示未安装,7.0上则会使用了V2安全的验证方式

3)同时勾选V1V2则所有版本都没问题

3.3 org.apache不支持问题

build.gradle里面加上这句

defaultConfig { useLibrary 'org.apache.http.legacy' }

3.4 SharedPreferences退

SharedPreferences read = getSharedPreferences(RELEASE_POOL_DATA, MODE_WORLD_READABLE); //MODE_WORLD_READABLE 8.0以后不能使用这个获取,会闪退,修改成MODE_PRIVATE

Android 8.0的适配

 

4.1 安卓8.0PHONE权限组新增两个权限

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

4.2 通知适配

安卓8.0中,为了更好的管制通知的提醒,不想一些不重要的通知打扰用户,新增了通知渠道,用户可以根据渠道来屏蔽一些不想要的通知

4.3 安装APK

首先在AndroidManifest文件中添加安装未知来源应用的权限:

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>

 

4.5 静态广播无法正常接收

问题原因: Android 8.0 引入了新的广播接收器限制,因此您应该移除所有为隐式广播 Intent 注册的广播接收器

解决方案: 使用动态广播代替静态广播

4.6 Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

问题原因: Android 8.0 非全屏透明页面不允许设置方向 解决方案:android:windowIsTranslucent设置为false

Android 9.0的适配
 

9.1 CLEARTEXT communication to life.115.com not permitted by network security policy

问题原因: Android P 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉

解决方案:

在资源文件新建xml目录,新建文件

<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true" /> </network-security-config>

清单文件配置:

<application android:networkSecurityConfig="@xml/network_security_config"> <!--9.0--> <uses-library android:name="org.apache.http.legacy" android:required="false" /> </application>

但还是建议都使用https进行传输

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值