我正在尝试在真正的呼叫者中创建一个弹出对话框,以在接到电话时显示。我可以检测用户何时使用广播接收器接听电话,并且可以在电话状态为打开时添加一个窗口。但是,如果电话被锁定,则弹出的对话框将显示在呼叫者屏幕的后面。
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及更高版本的呼叫者屏幕顶部。任何帮助将非常感激。谢谢你。
我通过在显示窗口之前使用Keyguard Manager解锁屏幕来解决此问题。
KeyguardManager km = (KeyguardManager) context .getSystemService(Context.KEYGUARD_SERVICE);
final KeyguardManager.KeyguardLock kl = km .newKeyguardLock("MyKeyguardLock");
kl.disableKeyguard();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句