Android-当应用程序在后台时启动一个对话框

Posted

技术标签:

【中文标题】Android-当应用程序在后台时启动一个对话框【英文标题】:Android- start a dialog when application on background 【发布时间】:2015-06-16 08:42:49 【问题描述】:

我有一个具有呼叫对话框的应用程序。我正在尝试在锁定屏幕上显示通话对话框。当应用程序不在后台时它已经工作了,实际上当应用程序打开并且锁定屏幕处于活动状态时它没有工作。 这是我的代码:

    public class CustomMainActivity extends QtActivity implements SensorEventListener
    

    @Override
    protected void onStart() 
        super.onStart();
        if (getCallId() != 0)
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
                WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
        else
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    .
    .
    .
    

    @Override
    protected void onResume() 
        super.onResume();

        if (getCallId() != 0)
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
                WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
        else
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
    .
    .
    .
    


【问题讨论】:

【参考方案1】:

尝试在onCreate() 中添加这些标志。

@Override
protected void onCreate(Bundle savedInstanceState) 
    // TODO Auto-generated method stub
    getWindow().addFlags(
            WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                    | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    super.onCreate(savedInstanceState);

【讨论】:

我在 onCreate 上添加了这一行。如果应用程序打开并进入睡眠状态,它不会显示呼叫对话框。在另一种情况下,它正在工作。 您的对话处于不同的活动中?我的意思是你如何显示你的对话框? 我在 Qt 上的对话框,我检查 callstate - if (getCallId() != 0) - 如果收到呼叫,我只想显示呼叫对话框 我的意思是说你必须启动一个单独的活动(包括 onCreate 中的那些标志)才能显示对话框。

以上是关于Android-当应用程序在后台时启动一个对话框的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序进入后台时停止后台服务

当应用程序进入后台android时显示启动画面

当一个活动直接从一个通知启动时,你如何构建一个 Android 后台堆栈?

从深层链接启动时,我可以使用代码退出我的 android 应用程序吗?

当应用程序在android上关闭时如何阻止重新启动服务?

当活动从后台(暂停)到前台时重新创建 Android 活动