Android7.1 悬浮窗Unable to add window crash问题

最近在项目中遇到了在Android7.1出现crash问题,如下:


经过对7.1源码分析,发现是悬浮窗设置TYPE问题,问题原因:

由于4.4及以前添加悬浮窗需要设置成TYPE_PHONE  就需要申请悬浮窗权限,这个权限比较敏感,有些手机默认这个权限是关闭的,但是在4.4之后,悬浮窗设置成TYPE_TOAST,不需要向系统申请权限,我做了一个分支4.4及以前使用TYPE_PHONE  4.4以后就使用TYPE_TOAST,但是系统升级Android7.0后,就会报Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- window android.view.ViewRootImpl$W@50f643c has already been added的错,具体意思是Toast已经被添加到窗口中,所以这时候我们可以把TYPE_TOAST换成TYPE_PHONE,这样就可以显示悬浮窗了,程序也不会crash。

你可能感兴趣的:(Android7.1 悬浮窗Unable to add window crash问题)