安卓开发中的系统版本兼容的注意事项(四)(Android8.0 API26)

本文介绍了在Android8.0及以上版本开发中遇到的两个主要兼容性问题:ContentResolver使用限制及应用内更新时安装权限的问题。针对ContentResolver,由于隐式广播限制,建议使用动态广播和自定义ContentProvider。对于应用内更新,Android8.0引入未知来源应用权限管理,需获取权限后才能安装,可通过canRequestPackageInstalls方法判断并引导用户授权。
摘要由CSDN通过智能技术生成

传送门:安卓开发中的系统版本兼容的注意事项(一)(Android5.0 API21)

               安卓开发中的系统版本兼容的注意事项(二)(Android6.0 API23)

               安卓开发中的系统版本兼容的注意事项(三)(Android7.0 API24)

作为安卓开发者最头疼的一点,莫过于谷歌越来越快的版本更新速度。以及升级编译版本后需要面对的大量兼容性异常。尤其是今年电信终端产业协会(TAF)发布了《移动应用软件高API等级预置与分发自律公约》。https://baike.baidu.com/item/移动应用软件高API等级预置与分发自律公约/22759862

逼着你升级,想不升级都不行。

下面将根据自己实际项目中升级开发版本的经验,对每个版本的注意事项做一下总结性回顾。方便自己以后查阅方便,也可以给有这方面需求的新手提供一点借鉴。
 

一、ContentResolver的使用限制

升级到8.0+以后,我们会发现,在使用registerContentObserver和notifyChange方法时。APP直接异常崩溃了, 后台异常提示为:SecurityException

这是因为Android 8.0 引入了新的广播接收器限制,应用中所有为隐式广播 Intent 注册的广播接收器都不能正常使用了。官方建议使用动态广播代替静态广播。具体的操作方法如下:

1.首先在AndroidManifest.xml中声明ContentProvider

<provider
    android:name="com.shengcai.observer.MyContentProvider"
    android:authorities="com.shengcai.observer.MyContentProvider"
    android:enabled="true"
    android:exported="false"/>

这里的MyContentProvider是我们统

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值