当钥匙保护设置在棉花糖中时,来电期间不显示"突出显示"窗口



我正在我的应用程序中使用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应用程序做得很好,不会每次通话都失败。只需要帮助找到正确的方法。

提前感谢!

我有三个建议供您尝试(不确定它们是否有效),但值得一试。

  1. 尝试添加这些标志:

    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    
  2. 试着在启动StandOut窗口活动之前增加一个延迟,比如说2秒,以确保它出现在来电系统屏幕之后(稍后,如果这解决了问题,请尽可能减少延迟)。

  3. 在这里也找到了这个答案,不确定你是否可以访问窗口属性,但看到了这个解决方案:

    "我们也面临着类似的问题,即覆盖层没有显示在带引脚锁定的设备上。对我们有效的解决方案如下:

    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主题

我希望这能对你有所帮助。

如果您找到解决方案,请更新

抱歉我的英语不好

最新更新