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 后台堆栈?