weixin_39867893
weixin_39867893
2020-12-27 08:06

关闭通知权限时DToast不显示,华为

华为荣耀8青春版 Android版本:8.0.0 EMUI版本:8.0.0 android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?

该提问来源于开源项目:Dovar66/DToast

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • weixin_39524425 weixin_39524425 4月前

    建议context使用Activity试试.

    引用README说明: 相信不少同学旧项目中封装的ToastUtil都是直接使用的ApplicationContext作为上下文,然后在需要弹窗的时候直接就是ToastUtil.show(str) ,这样的使用方式对于我们来说是最方便的啦。

    当然,使用DToast你也依然可以沿用这种封装方式,但这种方式在下面这个场景中可能会无法成功展示出弹窗(该场景下原生Toast也一样无法弹出), 不过请放心不会导致应用崩溃,而且这个场景出现的概率较小,有以下三个必要条件:1.通知栏权限被关闭(通知栏权限默认都是打开的) 2.非MIUI手机 3.Android8.0以上的部分手机(我最近测试中的几部8.0+设备都不存在该问题)。

    不过,如果想要保证在所有场景下都能正常展示弹窗,还是建议在DToast.make(context)时传入Activity作为上下文,这样在该场景下DToast会启用ActivityToast展示出弹窗。

    点赞 评论 复制链接分享
  • weixin_39683734 weixin_39683734 4月前

    在pixel2 androidP上面同样无法显示toast,依旧是token null is not valid。 我直接使用demo运行在上面的手机上,确定传入的为Activity的context,依旧无法显示toast。我将compileSdkVersion,buildToolsVersion,targetSdkVersion调整为25则一切正常。

    点赞 评论 复制链接分享
  • weixin_39524425 weixin_39524425 4月前

    pixel2就已经吃上P了?倒是还没研究过9.0,接下来我仔细看下。多谢提供信息

    点赞 评论 复制链接分享
  • weixin_39683734 weixin_39683734 4月前

    我昨天看了一下,将compileSdkVersion,buildToolsVersion,targetSdkVersion设置为25,几乎在任何手机上都可以正常显示toast,但是将他们调整为26或者更高,则在很多机型上面就无法显示了。我看到你的demo中采用的是27的sdk,为什么你那边不会呀?

    点赞 评论 复制链接分享
  • weixin_39524425 weixin_39524425 4月前

    麻烦加下我QQ:847736308

    点赞 评论 复制链接分享
  • weixin_39524425 weixin_39524425 4月前

    release1.0.5已修复

    点赞 评论 复制链接分享