为了账号安全,请及时绑定邮箱和手机立即绑定

android8.0适配问题

标签:
Android

android升级到26之后,所有通知需要 channel id,隐式广播发送的时候需要加包名,有些特殊广播接收不到,后台启动服务会有问题。还有安装问题。

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

ANSWER_PHONE_CALLS:允许您的应用通过编程方式接听呼入电话。要在您的应用中处理呼入电话,您可以使用 acceptRingingCall() 函数。

READ_PHONE_NUMBERS :权限允许您的应用读取设备中存储的电话号码。

通知适配

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

安装APK

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

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

这样系统会自动询问用户完成授权。当然你也可以先使用 canRequestPackageInstalls()查询是否有此权限,如果没有的话使用Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES这个action将用户引导至安装未知应用权限界面去授权。


SecurityException的闪退

问题原因:项目使用了ActiveAndroid,在 8.0 或 8.1 系统上使用 26 或以上的版本的 SDK 时,调用 ContentResolver 的 notifyChange 方法通知数据更新,或者调用 ContentResolver 的 registerContentObserver 方法监听数据变化时,会出现上述异常。

解决方案:

(1)在清单文件配置

<provider         android:name="com.activeandroid.content.ContentProvider"         android:authorities="com.ylmf.androidclient"         android:enabled="true"         android:exported="false"> </provider> 复制代码

(2)去掉这个监听刷新的方法,改为广播刷新


静态广播无法正常接收

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

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

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

问题原因: Android 8.0 非全屏透明页面不允许设置方向
(后面8.1系统谷歌就去掉了这个限制,可能很多人真的不习惯吧) 解决方案:        
 (1)android:windowIsTranslucent设置为false          
  (2)如果还是想用的话,就去掉清单文件中Activity中的android:screenOrientation="portrait",         
  (3)就是使用透明的dialog或者PopupWindow来代替,也可以用DialogFragment,看自己的需求和喜好 复制代码




点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消