Android适配8.0遇到的一些坑
刚进新公司的时候华为市场对APP提示的是不兼容android8.0,查看了下原代码发现项目基本还停留在6.0的适配上,所以就大致适配了7.0、8.0,先记录几个主要的问题点,后续更新。首先必须的把SdkVersion提升到26把(华为市场提示不兼容8.0也是这个原因),然后google了一圈。
大致google+百度了一大圈,基本锁定会导致程序异常+功能失效的几个点。
①:通知(会收不到通知)
②:悬浮窗(7.0、8.0)(会崩溃)
③:自适应图标(图标终于有所关注)
一:通知渠道
Android O版本对通知做了规范性的控制,强制用户在发送通知的时候,对通知进行系统性的管理,新增了channel渠道功能,貌似Android P版本对与这一点也做了强调,使用户能够更好的管理通知,做到有目的性的屏蔽通知。下面上相关性的代码
NotificationChannel mChannel =new NotificationChannel("channel_01","消息推送", NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(mChannel);//创建一个通知渠道
其他和原设置一样即可。
二:悬浮窗
在一些广播中需要弹出对话框的应用场景,没有依附的activity,这个时候就可以用悬浮窗,相关适配以及源码有注释自行查看。附申请权限源码
三:自适应图标
Android O版本对图标做了修改,总体上来讲使Android APP从桌面就开始高大上起来了,加入了一些列动画,详细的可以看这篇博文。
另外:设计到一些需要访问清单文件,或者是pakageManager类的时候,适配8.0需要加入新的权限,安装权限。
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
以上基本就是8.0中着重需要注意的点,其实通知渠道设置在7.0中就已经开始出现,如果适配了7.0的话,8.0基本也已经可以了。如果还出现8.0崩溃的情况,看看崩溃日志应该都可以解决了,还是不行的话请私发我崩溃信息。对此再做出更新。
最后给大家介绍一款比较好的申请权限的第三方库,强烈推荐。一句话解决问题并且可以直接跳转到相关权限授权页,适配率比较高。简洁!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
iOS开发实战 - 完美解决UIScrollView嵌套滑动手势冲突
我们应该都有用过这个功能,你的朋友微信给你分享了一个淘宝里面的商品链接,然后当你复制这个链接打开淘宝APP的时候,就会弹出一个弹窗,像这样: example.PNG 这个功能想必大家都挺熟悉,受这个启发我们产品也想在我们APP上添加这样一个功能,与这个不一样的是,当我们复制一段网址的时候打开我们的APP会弹出框填一些信息后上传到我们的“资源库”。大体功能就这样,所以记录一下实现的过程。 一、弹窗视图功能 .h中:两个信号一个是确定信号一个是取消信号 两个方法,一个显示一个隐藏方法 1 2 3 4 5 @property(nonatomic,strong)RACSubject*uploadSureSignal; //确定上传信号 @property(nonatomic,strong)RACSubject*hideSucSignal; //隐藏 -( void )show; -( void )hide; .m中:主要是两个textview,还有涉及到在keywindow上,IQKeyboard的一些操作 1 2 3 @property(nonatomic,assign)CGFloatke...
- 下一篇
阿里的Atlas组件化框架
Atlas简介 Atlas是一个Android客户端容器框架,主要提供了组件化、动态性、解耦化的支持,支持在编码期、Apk运行期以及后续运维修复期的各种问题。Atlas目前支持的主要功能有: 在工程期,实现工程独立开发,调试功能,工程模块的独立; 在运行期间,实现完整的组件生命周期映射,类隔离等机制; 在运维期间,提供快速增量的更新修复功能,快速升级。 Atlas是工程期和运行期共同起作用的框架,它尽量将一些工作放在工程期,这样保证运行期的简单、稳定。下面是Atlas组件化的一个框架原理图。 上图是手机淘宝的apk,第一层目录上与标准的apk是完全一样的。在App会有很多的so文件,每个so文件如果解开来看它的结构类似于完整的apk,但本身不能独立运行,它运行在整个容器里,每一个组件都是独立的Bundle。例如,手淘的模块层次划分如下图。从模块来划分,手淘APK可以分为两层,上层是经过拆分的业务Bundle,扫码、评价、详情,各个业务之间可以进行功能的调用,可以通过路由调度到其他业务方。下层是共享的底层中间件,向业务方开放各种能力,如网络库、图片库等,会在容器里进行统一地把控,这样做的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Hadoop3单机部署,实现最简伪集群