StandOut window 在 Marshmallow 中设置 Key Guard 时在来电期间不显示
StandOut window not shown during incoming call when key guard is set in Marshmallow
我在我的应用程序中使用了 Mark Wei 令人难以置信的库 StandOut:
http://pingpongboss.github.io/StandOut/
我所做的与TrueCaller App
非常相似
在来电时显示我自己的视图。
这通常效果很好。
我的问题是什么?
关于一个非常具体的案例:
- 仅 Android 棉花糖 (6)
- 当钥匙保护锁设置为开时
然后,应用程序的 StandOut window 会在来电 window 之后发回,除了闪烁几分之一秒外不会显示。
我尝试了什么?
同时使用这两个标志:
- FLAG_DISMISS_KEYGUARD
- FLAG_SHOW_WHEN_LOCKED
此外(和单独)我尝试了这种不推荐使用的方式:
KeyguardManager.KeyguardLock mLock;
KeyguardManager mKeyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
mLock = mKeyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
mLock.disableKeyguard();
当这也失败时,我尝试授予我的应用程序管理员权限(我不会添加整个代码来完成它,因为它很长但我做对了)然后尝试了这个:
devicePolicyManager.setKeyguardDisabled(deviceAdmin,true);
注意:我想再次强调,我知道这是可能的,因为 TrueCaller App 做得很好并且每次调用都不会失败。只需要帮助找到正确的方法。
提前致谢!
我有三个建议供您尝试(不确定它们是否有效),但它们值得一试。
尝试添加这些标志:
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
尝试在触发 StandOut 之前添加 2 秒的延迟 window activity 以确保它在来电系统屏幕之后出现(稍后,如果这样可以解决问题,请尽可能减少延迟。
在这里也找到了这个答案,不确定你是否有权访问 window 属性,但看到了这个解决方案:
"We were also facing similar issue that the overlay was not displayed on a device with pin lock. The solution that worked for us is below:
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
mParams = new LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT,
LayoutParams.TYPE_SYSTEM_ERROR,
LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
是
LayoutParams.TYPE_SYSTEM_ERROR
造成了差异。"
类似的问题:Pop up window over Android native incoming call screen like true caller Android app
希望这里的东西对你有帮助,如果解决了欢迎更新
更新: 问题已解决:(添加):
LayoutParams.TYPE_SYSTEM_ERROR
请确保在布局膨胀之前添加它,否则它什么都不做。
嗨
我有同样的问题...我正在尝试制作一个在来电和去电时弹出 activity 的应用...
我的应用程序运行良好,但在 android 6 和 "KEYGUARD" 处于活动状态时除外。
我尝试了一些可以帮助您找到解决方案的方法
我尝试将 window 管理器与 (TYPE_SYSTEM_ERROR) 一起使用并扩展布局以在来电上显示屏幕
它成功运行并在系统调用屏幕上显示了布局 android 6 但我发现了另一个问题..
此解决方案在键盘锁未通过图案锁或密码锁保护时工作正常...如果键盘锁使用滑动解锁并且它没有任何锁定模式,则解决方案工作正常但如果keyguard 有任何型号的锁,自定义 activity 屏幕将再次显示在系统调用屏幕上,但是 activity 的代码(例如 clicklistener 或按钮代码)根本不起作用 ...
顺便说一句,我发现了一些应用程序,它正是你和我尝试制作的
你可以在这里找到它 :
Caller Screen OS9 ID Themes
希望对您有所帮助。
如果找到解决方案请更新
抱歉我的英语不好
我在我的应用程序中使用了 Mark Wei 令人难以置信的库 StandOut: http://pingpongboss.github.io/StandOut/
我所做的与TrueCaller App
非常相似在来电时显示我自己的视图。 这通常效果很好。
我的问题是什么?
关于一个非常具体的案例:
- 仅 Android 棉花糖 (6)
- 当钥匙保护锁设置为开时
然后,应用程序的 StandOut window 会在来电 window 之后发回,除了闪烁几分之一秒外不会显示。
我尝试了什么?
同时使用这两个标志:
- FLAG_DISMISS_KEYGUARD
- FLAG_SHOW_WHEN_LOCKED
此外(和单独)我尝试了这种不推荐使用的方式:
KeyguardManager.KeyguardLock mLock;
KeyguardManager mKeyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
mLock = mKeyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
mLock.disableKeyguard();
当这也失败时,我尝试授予我的应用程序管理员权限(我不会添加整个代码来完成它,因为它很长但我做对了)然后尝试了这个:
devicePolicyManager.setKeyguardDisabled(deviceAdmin,true);
注意:我想再次强调,我知道这是可能的,因为 TrueCaller App 做得很好并且每次调用都不会失败。只需要帮助找到正确的方法。
提前致谢!
我有三个建议供您尝试(不确定它们是否有效),但它们值得一试。
尝试添加这些标志:
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
尝试在触发 StandOut 之前添加 2 秒的延迟 window activity 以确保它在来电系统屏幕之后出现(稍后,如果这样可以解决问题,请尽可能减少延迟。
在这里也找到了这个答案,不确定你是否有权访问 window 属性,但看到了这个解决方案:
"We were also facing similar issue that the overlay was not displayed on a device with pin lock. The solution that worked for us is below:
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); mParams = new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, LayoutParams.TYPE_SYSTEM_ERROR, LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);
是
LayoutParams.TYPE_SYSTEM_ERROR
造成了差异。"类似的问题:Pop up window over Android native incoming call screen like true caller Android app
希望这里的东西对你有帮助,如果解决了欢迎更新
更新: 问题已解决:(添加):
LayoutParams.TYPE_SYSTEM_ERROR
请确保在布局膨胀之前添加它,否则它什么都不做。
嗨 我有同样的问题...我正在尝试制作一个在来电和去电时弹出 activity 的应用...
我的应用程序运行良好,但在 android 6 和 "KEYGUARD" 处于活动状态时除外。
我尝试了一些可以帮助您找到解决方案的方法
我尝试将 window 管理器与 (TYPE_SYSTEM_ERROR) 一起使用并扩展布局以在来电上显示屏幕 它成功运行并在系统调用屏幕上显示了布局 android 6 但我发现了另一个问题..
此解决方案在键盘锁未通过图案锁或密码锁保护时工作正常...如果键盘锁使用滑动解锁并且它没有任何锁定模式,则解决方案工作正常但如果keyguard 有任何型号的锁,自定义 activity 屏幕将再次显示在系统调用屏幕上,但是 activity 的代码(例如 clicklistener 或按钮代码)根本不起作用 ...
顺便说一句,我发现了一些应用程序,它正是你和我尝试制作的 你可以在这里找到它 : Caller Screen OS9 ID Themes
希望对您有所帮助。
如果找到解决方案请更新
抱歉我的英语不好