Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

设置系统浮窗的不需要显示的页面 bug #10

Closed
songsongtao opened this issue Sep 6, 2019 · 12 comments
Closed

设置系统浮窗的不需要显示的页面 bug #10

songsongtao opened this issue Sep 6, 2019 · 12 comments

Comments

@songsongtao
Copy link

// 设置系统浮窗的不需要显示的页面
.setFilter(MainActivity::class.java, SecondActivity::class.java)
不起作用在demo上和我自己的项目上试了不起作用,还是显示

@princekin-f
Copy link
Owner

  • 设置页面过滤,需要在Application的onCreate中方法初始化一下EasyFloat.init(this)
  • 如果还是不行,麻烦提供一下机型信息,我想办法测一下。

@songsongtao
Copy link
Author

songsongtao commented Sep 6, 2019

测试了还是不行
机型:pixel
系统:android9.0

@songsongtao
Copy link
Author

songsongtao commented Sep 6, 2019

EasyFloat.with(MainActivity.this) .setShowPattern(ShowPattern.ALL_TIME) .setSidePattern(SidePattern.RESULT_SIDE) .setGravity(Gravity.CENTER) .setFilter(MainActivity::class.java,SecondActivity::class.java)
经过反复测试,进入SecondActivity可以不显示,MainActivity不行,进入子页面,返回MainActivity后悬浮窗不显示
demo也是如此

@songsongtao
Copy link
Author

image
看了源代码,我已经明白了,就是已经onstart过后的acitivity是不会再走onActivityStarted,所以在已经显示的页面设置setFilter然后show,当前页面不起效果,只有重新回到该界面重走才正常

@princekin-f
Copy link
Owner

EasyFloat.with(MainActivity.this) .setShowPattern(ShowPattern.ALL_TIME) .setSidePattern(SidePattern.RESULT_SIDE) .setGravity(Gravity.CENTER) .setFilter(MainActivity::class.java,SecondActivity::class.java)
经过反复测试,进入SecondActivity可以不显示,MainActivity不行,进入子页面,返回MainActivity后悬浮窗不显示
demo也是如此

  • 目前是根据Activity的生命周期判断的;
  • 如果在创建的Activity设置了过滤当前Activity;
  • 确实会出现创建时显示,有页面跳转后过滤生效的情况;
  • 细节考虑不周,下次优化一下;
  • 目前你在创建完,手动调用一下隐藏就可以了。

@songsongtao
Copy link
Author

ok,必须给作者的维护态度点赞

@princekin-f
Copy link
Owner

哈哈,谢谢啦

@songsongtao
Copy link
Author

还要补充一点,进入设置隐藏的界面后进入后台,隐藏了悬浮窗,悬浮窗将不显示,除非重新onstart需要显示的界面
override fun onActivityStopped(activity: Activity?) { if (activity == null) return activityCount-- if (isForeground()) return // 当app处于后台时,检测是否有仅前台显示的系统浮窗 FloatService.floatMap.forEach { (tag, manager) -> run { if (manager.config.showPattern == ShowPattern.FOREGROUND) setVisible(tag = tag) } } }

@princekin-f
Copy link
Owner

好的,细节防不胜防🤣

@princekin-f
Copy link
Owner

刚刚更新了一下v 1.0.7

@songsongtao
Copy link
Author

我发现小米和vivo手机中有后台弹出界面权限,如果不开启在后台没办法点击打开界面,有判断的方法吗

@princekin-f
Copy link
Owner

我发现小米和vivo手机中有后台弹出界面权限,如果不开启在后台没办法点击打开界面,有判断的方法吗

没有啊,我也是第一次知道有这个权限

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants