我正在我的应用程序中使用Mark Wei令人难以置信的库StandOut:http://pingpongboss.github.io/StandOut/
我所做的与TrueCaller应用非常相似
这显示了我对来电的看法。这通常效果很好。
我的问题是什么
关于一个非常具体的案例:
- 仅在Android棉花糖(6)上
- 当钥匙防护锁设置为ON时
然后,应用程序的StandOut窗口被发送回来电窗口后面,除了闪烁几秒钟外,不会显示。
我试过什么
同时使用这两个标志:
- 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应用程序做得很好,不会每次通话都失败。只需要帮助找到正确的方法。
提前感谢!
我有三个建议供您尝试(不确定它们是否有效),但值得一试。
-
尝试添加这些标志:
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
-
试着在启动StandOut窗口活动之前增加一个延迟,比如说2秒,以确保它出现在来电系统屏幕之后(稍后,如果这解决了问题,请尽可能减少延迟)。
-
在这里也找到了这个答案,不确定你是否可以访问窗口属性,但看到了这个解决方案:
"我们也面临着类似的问题,即覆盖层没有显示在带引脚锁定的设备上。对我们有效的解决方案如下:
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
。"类似的问题:在Android原生来电屏幕上弹出窗口,就像真正的来电者Android应用程序
希望这里的内容对您有帮助,如果解决了,请更新。
更新:这解决了问题:(添加此):
LayoutParams.TYPE_SYSTEM_ERROR
只需确保在布局膨胀之前添加此项,否则将不会有任何作用。
嗨我也有同样的问题。。。我正在尝试制作一个应用程序,在传入&传出呼叫。。。
我的应用程序运行良好,除了在android 6&当"KEYGUARD"处于活动状态时。
我尝试了一些方法,可以帮助你找到解决方案
我尝试将窗口管理器与(TYPE_SYSTEM_ERROR)一起使用,并扩展布局以在来电时显示屏幕它成功地工作了&在android 6系统调用屏幕上显示布局,但我发现了另一个问题。。
这个解决方案工作良好,只是当键盘保护不是由模式锁或通行证锁固定。。。如果键盘保护工作与滑动解锁&它没有任何锁定模式,解决方案运行良好,但如果keyguard有任何类型的锁定,自定义活动屏幕将再次显示在系统调用屏幕上,但活动的代码(如clicklistener或按钮代码)根本不起作用。。。
顺便说一句,我发现了一些应用程序,它正是你&我试着做你可以在这里找到它:来电屏幕OS9 ID主题
我希望这能对你有所帮助。
如果您找到解决方案,请更新
抱歉我的英语不好