手机响铃时的窗口覆盖

沙申克·乌杜帕(Shashank Udupa)

我正在尝试在真正的呼叫者中创建一个弹出对话框,以在接到电话时显示。我可以检测用户何时使用广播接收器接听电话,并且可以在电话状态为打开时添加一个窗口。但是,如果电话被锁定,则弹出的对话框将显示在呼叫者屏幕的后面。

telephonyManager.listen(new PhoneStateListener() {
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            super.onCallStateChanged(state, incomingNumber);
            switch (state) {
                case TelephonyManager.CALL_STATE_RINGING:
                    // CALL_STATE_RINGING
                    Log.d("MyReceiver", "I'm in " + state + " and the number is " + incomingNumber);
                    wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
                    params1 = new WindowManager.LayoutParams(
                            LayoutParams.MATCH_PARENT,
                            LayoutParams.MATCH_PARENT,
                            LayoutParams.TYPE_SYSTEM_ALERT |
                                    LayoutParams.TYPE_SYSTEM_OVERLAY,
                            LayoutParams.FLAG_NOT_TOUCH_MODAL |
                            LayoutParams.FLAG_NOT_FOCUSABLE |
                            LayoutParams.FLAG_TURN_SCREEN_ON |
                            LayoutParams.FLAG_SHOW_WHEN_LOCKED |
                            LayoutParams.FLAG_KEEP_SCREEN_ON,
                            PixelFormat.TRANSPARENT);

                    params1.gravity = Gravity.TOP;
                    params1.height = 150;
                    params1.width = 512;
                    params1.x = 200;
                    params1.y = 200;
                    params1.format = PixelFormat.TRANSLUCENT;

                    ly1 = new LinearLayout(context);
                    ly1.setBackgroundColor(Color.BLACK);
                    ly1.setOrientation(LinearLayout.VERTICAL);

                    wm.addView(ly1, params1);
                    break;

                default:
                    break;
            }
        }
    }, PhoneStateListener.LISTEN_CALL_STATE);

该窗口不会出现在Android版本Lollipop及更高版本的呼叫者屏幕顶部。任何帮助将非常感激。谢谢你。

沙申克·乌杜帕(Shashank Udupa)

我通过在显示窗口之前使用Keyguard Manager解锁屏幕来解决此问题。

KeyguardManager km = (KeyguardManager) context .getSystemService(Context.KEYGUARD_SERVICE);
final KeyguardManager.KeyguardLock kl = km .newKeyguardLock("MyKeyguardLock");
kl.disableKeyguard();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

手机在Android中处于通话状态时如何响铃?

来自分类Dev

手机静音时进行活动

来自分类Dev

在Android手机中发送呼叫时不包含“#”(即用于手机充电)

来自分类Dev

手机桌面

来自分类Dev

调用void函数时振动手机

来自分类Dev

调用camera.release()时手机冻结

来自分类Dev

搜寻位置时,防止GPS消耗手机的电池

来自分类Dev

当手机横向放置时,活动无法启动

来自分类Dev

手机启动时无法运行android worker

来自分类Dev

调用void函数时振动手机

来自分类Dev

将手机与android studio连接时出错

来自分类Dev

手机屏幕关闭时,ADB失去连接

来自分类Dev

手机仅在插入PC时才充电

来自分类Dev

手机屏幕关闭时,Xamarin DispatchKeyEvent不触发

来自分类Dev

手机语言改变时不要改变设计

来自分类Dev

手机右侧的空白

来自分类Dev

手机菜单问题

来自分类Dev

手机页面截断

来自分类Dev

手机将静音

来自分类Dev

手机菜单CSS

来自分类Dev

Android手机存储

来自分类Dev

手机右侧的空白

来自分类Dev

手机页面截断

来自分类Dev

手机WordPress导航

来自分类Dev

如果手机中未安装simcard,如何禁用/覆盖错误对话框

来自分类Dev

如果手机中未安装simcard,如何禁用/覆盖错误对话框

来自分类Dev

调整手机和台式机的框架尺寸时出现问题

来自分类Dev

如何为<input>的智能手机禁用“另存为”弹出窗口

来自分类Dev

用户在模态窗口外单击时如何响铃?