我在我的应用中使用Mark Wei的令人难以置信的图书馆StandOut: http://pingpongboss.github.io/StandOut/
我所做的与TrueCaller App
非常相似在来电时显示我自己的视图。 这通常很有效。
我的问题是什么?
在一个非常具体的案例中:
然后,应用程序的StandOut窗口将在传入呼叫窗口后面发回,除了闪烁几分之一外,不显示。
我尝试了什么?
同时使用这两个标志:
另外(和另外)我尝试了这种弃用方式:
KeyguardManager.KeyguardLock mLock;
KeyguardManager mKeyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
mLock = mKeyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
mLock.disableKeyguard();
如果这也失败了,我尝试授予我的应用管理员权限(我不会添加整个代码来执行它,因为它很长但我做得很好)然后尝试了这个:
devicePolicyManager.setKeyguardDisabled(deviceAdmin,true);
注意:我想再次强调,我知道这是可能的,因为TrueCaller App做得很好并且每次通话都不会失败。只需要帮助就能找到正确的方法。
提前致谢!
答案 0 :(得分:2)
我有三个建议让你尝试,(不确定它们是否会起作用),但值得一试。
尝试添加这些标志:
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带来了不同。“
类似的问题:Pop up window over Android native incoming call screen like true caller Android app
希望这里的内容对您有所帮助,如果已解决,请更新。
更新:这解决了问题:(添加此内容):
LayoutParams.TYPE_SYSTEM_ERROR
只需确保在布局膨胀之前添加它,否则它将什么都不做。
答案 1 :(得分:1)
<强>您好强> 我有同样的问题...我正在尝试制作一个应用程序,弹出一个活动而不是传入和放大打电话......
我的应用程序运行良好,除了在android 6&amp;当“KEYGUARD”处于活动状态时。
我尝试了一些可以帮助您找到解决方案的方法
我尝试使用带有(TYPE_SYSTEM_ERROR)的窗口管理器并通过膨胀布局来显示来电的屏幕 它成功地运作了显示系统调用屏幕android 6的布局,但我发现了另一个问题..
这个解决方案可以正常使用,当钥匙保护装置没有通过图案锁定或通过锁定来保护时...如果键盘保护装置可以通过滑动来解锁和解锁它没有任何锁定模式,解决方案工作正常,但如果键盘锁具有任何锁定类型,自定义活动屏幕将再次显示在系统调用屏幕上,但活动的代码(如clicklistener或按钮代码)根本不起作用。 ..
BTW我发现了一些应用程序,它正是你和你的我试着做 你可以在这里找到它 : Caller Screen OS9 ID Themes
我希望这可以帮到你。
如果您找到解决方案,请更新
抱歉我的英语不好