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

3
我正在编写一个应用程序,使用服务在后台接收消息。我想显示类似于本机的来电界面的屏幕(即一个显示在所有其他内容上方的屏幕,即使设备已锁定)。目前,该应用程序只控制着一个在锁屏和主屏幕上都有的小部件,但拥有一个更本地化的外观活动会更好。
我已经尝试过对话框活动。它有点做到了我需要的效果,但它不会在锁屏中显示,并且由于我从后台服务启动它,所以还会在其后面显示主要活动。
1个回答

5
我找到了一个解决方案,适用于未来可能遇到此问题的人。创建一个活动以显示屏幕,然后将以下内容添加到活动类中:
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);

这似乎有所作用。将活动的主题设置为全屏模式也有助于创建更相似的铃声体验。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接