【发布时间】:2016-05-05 07:19:42
【问题描述】:
需要在拨号器上显示活动(主题对话框),并在活动中填充一些信息,例如真正的呼叫者。在解锁的手机中,它运行良好。
但在锁定的手机中,它没有按预期工作。做了一些谷歌搜索,发现需要添加一些标志才能使对话框出现在锁定屏幕中。
CallActivity.java
LayoutParams layoutParams = new LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT, LayoutParams.TYPE_SYSTEM_DIALOG | 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 |
LayoutParams.FLAG_DISMISS_KEYGUARD,
PixelFormat.TRANSLUCENT);
getWindow().setAttributes(layoutParams);
在上面的代码中,我添加了与使活动显示为对话框相关的更改和一些与使对话框在锁定屏幕中正常工作相关的标志(FLAG_TURN_SCREEN_ON、FLAG_SHOW_WHEN_LOCKED、FLAG_KEEP_SCREEN_ON、FLAG_DISMISS_KEYGUARD)。
我还使用(来自广播接收器)开始活动
Intent intent = new Intent(context, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
context.startActivity(intent);
【问题讨论】:
-
你有答案了吗?