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,看自己的需求和喜好 复制代码
共同学习,写下你的评论
评论加载中...
作者其他优质文章