在Marshmallow

时间:2016-06-12 13:05:48

标签: android android-6.0-marshmallow keyguard incoming-call

我在我的应用中使用Mark Wei的令人难以置信的图书馆StandOut: http://pingpongboss.github.io/StandOut/

我所做的与TrueCaller App

非常相似

在来电时显示我自己的视图。 这通常很有效。

我的问题是什么?

在一个非常具体的案例中:

  • 仅适用于Android Marshmallow(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 App做得很好并且每次通话都不会失败。只需要帮助就能找到正确的方法。

提前致谢!

2 个答案:

答案 0 :(得分:2)

我有三个建议让你尝试,(不确定它们是否会起作用),但值得一试。

  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
    带来了不同。“

    类似的问题:Pop up window over Android native incoming call screen like true caller Android app

  4. 希望这里的内容对您有所帮助,如果已解决,请更新。

    更新:这解决了问题:(添加此内容):

    LayoutParams.TYPE_SYSTEM_ERROR

    只需确保在布局膨胀之前添加它,否则它将什么都不做。

答案 1 :(得分:1)

<强>您好 我有同样的问题...我正在尝试制作一个应用程序,弹出一个活动而不是传入和放大打电话......

我的应用程序运行良好,除了在android 6&amp;当“KEYGUARD”处于活动状态时。

我尝试了一些可以帮助您找到解决方案的方法

我尝试使用带有(TYPE_SYSTEM_ERROR)的窗口管理器并通过膨胀布局来显示来电的屏幕 它成功地运作了显示系统调用屏幕android 6的布局,但我发现了另一个问题..

这个解决方案可以正常使用,当钥匙保护装置没有通过图案锁定或通过锁定来保护时...如果键盘保护装置可以通过滑动来解锁和解锁它没有任何锁定模式,解决方案工作正常,但如果键盘锁具有任何锁定类型,自定义活动屏幕将再次显示在系统调用屏幕上,但活动的代码(如clicklistener或按钮代码)根本不起作用。 ..

BTW我发现了一些应用程序,它正是你和你的我试着做 你可以在这里找到它 : Caller Screen OS9 ID Themes

我希望这可以帮到你。

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

抱歉我的英语不好