我正在编写一个使用服务在后台接收消息的应用程序。我想显示一个类似于本机来电屏幕的屏幕(即使设备被锁定,屏幕也显示在其他所有屏幕上方)。目前,该应用程序只控制锁屏和主屏幕上的小部件,但具有更原生的活动将是好的。
我已经尝试过对话活动。它有点像我需要的,但它没有显示在锁定屏幕上,由于我从后台服务启动它,显示它背后的主要活动。
答案 0 :(得分:3)
我找到了解决这个问题的方案,适用于将来偶然发现这种情况的人。创建一个活动以显示您的屏幕,然后将以下内容添加到活动类:
public class DialogActivity extends Activity
{
/**
* Tag for this class to be used when logging.
*/
public static final String TAG = "DialogActivity";
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Set the window to always display on the forefront and to be opened when locked
Window oWindow = this.getWindow();
oWindow.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
+ WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
+ WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// Set our layout
this.setContentView(R.layout.activity_dialog);
这似乎具有预期的效果。将活动的主题设置为全屏也有助于为铃声创造更加类似的体验。