短篇小说:显示特定活动时,我的对话框将被隐藏。当显示其他活动时,可以很好地看到对话框。
长篇故事:我有一个使用以下标志的活动:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_IGNORE_CHEEK_PRESSES);
当您将手机贴在脸上时,它还会使用PROXIMITY_SCREEN_OFF_WAKE_LOCK
来关闭屏幕。
此活动在清单中定义如下:
<activity
android:name=".ui.MyHidingActivity"
android:configChanges="orientation|screenSize"
android:launchMode="singleInstance"
android:windowSoftInputMode="stateHidden"></activity>
现在,当我想要创建并显示此对话框的应用程序中发生事件时:
KeyguardManager km = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
final KeyguardManager.KeyguardLock kl = km.newKeyguardLock("com.mycompany.myproject");
kl.disableKeyguard();
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.FULL_WAKE_LOCK, "My_App");
wl.acquire();
final AlertDialog alertDialog = new AlertDialog.Builder(tabActivity).create();
alertDialog.getWindow().addFlags(
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
alertDialog.setTitle("Incoming Event");
alertDialog.setMessage("You have an incoming event.");
alertDialog.show();
wl.release();
当显示任何其他活动时,对话框显示正常,隐藏 隐藏的<{strong> 强>对话无论出于何种原因。知道可能是什么问题吗?
答案 0 :(得分:1)
好的,我找到了解决方案。
问题发生在new AlertDialog.Builder(tabActivity).create()
我传入主要活动的地方。这并不仅仅将此活动用作任何旧的Context。该对话框显示在该活动的顶部。但是MyHidingActivity与主要活动不是同一个活动,所以它隐藏了主要活动和它附加的对话框。
要解决此问题,您必须在所有其他活动之上显示对话框。为此你必须:
AlertDialog.Builder(this).create()
(其中&#34;这个&#34;是我的
应用程序)使对话框成为系统对话框:
alertDialog.getWindow()的setType(WindowManager.LayoutParams的 TYPE_SYSTEM_ALERT 即可。);