在Android中显示类似本机来电屏幕的屏幕

时间:2013-09-24 14:35:01

标签: android popup

我正在编写一个使用服务在后台接收消息的应用程序。我想显示一个类似于本机来电屏幕的屏幕(即使设备被锁定,屏幕也显示在其他所有屏幕上方)。目前,该应用程序只控制锁屏和主屏幕上的小部件,但具有更原生的活动将是好的。

我已经尝试过对话活动。它有点像我需要的,但它没有显示在锁定屏幕上,由于我从后台服务启动它,显示它背后的主要活动。

1 个答案:

答案 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);

这似乎具有预期的效果。将活动的主题设置为全屏也有助于为铃声创造更加类似的体验。