Dovar66 / DToast

同学,你的系统Toast可能需要修复一下!Fix Your Android Toast!
563 stars 60 forks source link

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

Closed Chi-Account closed 5 years ago

Chi-Account commented 5 years ago

华为荣耀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 commented 5 years ago

建议context使用Activity试试.

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

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

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

Wensibob commented 5 years ago

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

Dovar66 commented 5 years ago

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

Wensibob commented 5 years ago

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

Dovar66 commented 5 years ago

@Wensibob 麻烦加下我QQ:847736308

Dovar66 commented 5 years ago

release1.0.5已修复