Android8.0遇到的坑

最近犹豫项目需要,需要把targetSDKVersion提升到26,原来以为只是一句代码搞定的事情,后来经测试发现的两个坑:

一:系统弹窗(悬浮窗)不生效

项目里使用了SYSTEM_ALERT_WINDOW     权限弹了在service里面设置了dialog的TYPE_SYSTEM_ALERT
悬浮窗,发现不好用。解决办法:

如果应用使用 SYSTEM_ALERT_WINDOW 权限并且尝试使用以下窗口类型之一来在其他应用和系统窗口上方显示提醒窗口:

请用 TYPE_APPLICATION_OVERLAY  替换
dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY));

二:通知不生效

项目里用到了通知提醒,提升后8.0的机器上也不好用了。查阅API发现,原来的

new NotificationCompat.Builder(this)升到8.0后被弃用了,改为了  new NotificationCompat.Builder(this,String channelId)
而channelId的设置如下:
 
String id = "channel_1";
String description = "123";
int importance = NotificationManager.IMPORTANCE_LOW;
NotificationChannel mChannel = new NotificationChannel(id, "123", importance);
  mChannel.setDescription(description);
  mChannel.enableLights(true);
  mChannel.setLightColor(Color.BLUE);
  mChannel.enableVibration(true);
  mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
notificationManager.createNotificationChannel(mChannel);
如果不生成channel,直接填入一个id会不生效的。

所以升到26的同学适配8.0机型的时候一定要注意这两个问题,要

if(Build.VERSION.SDK_INT>=26){}else{}
判断分别设置的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值