bboylin / UniversalToast

简洁优雅可点击的toast控件,无BadTokenException风险,关闭通知权限依然正常显示。An elegant and flexible toast which can handle click event , avoid BadTokenException and run fine without notification permission

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

可点击的toast在genymotion模拟器上会直接闪退,在真机上会没反应。

hyyaoming opened this issue · comments

01-18 02:16:39.026 31245-31245/xyz.bboylin.universaltoast E/AndroidRuntime: FATAL EXCEPTION: main
Process: xyz.bboylin.universaltoast, PID: 31245
android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@55a4feb -- permission denied for window type 2002
at android.view.ViewRootImpl.setView(ViewRootImpl.java:703)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
at xyz.bboylin.universialtoast.UniversalToast.show(UniversalToast.java:273)
at xyz.bboylin.universialtoast.UniversalToast.showError(UniversalToast.java:302)
at xyz.bboylin.universaltoast.MainActivity$2.onItemClick(MainActivity.java:85)
at android.widget.AdapterView.performItemClick(AdapterView.java:310)
at android.widget.AbsListView.performItemClick(AbsListView.java:1156)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3121)
at android.widget.AbsListView$3.run(AbsListView.java:4036)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

经过测试需要把WinDowManage设置type那行代码注释掉,真机和genymotion都可运行了。

参考issue2,权限问题。

还需要用户自行申请权限,感觉不太好。

下一步会考虑绕过悬浮窗权限,谢谢提建议。

1.0.4版本无需动态申请权限了,静态申请即可。但为了适配Android 8.0最好动态申请下,可参考demo。