我在一个应用程序上工作,我遇到了一个奇怪的问题。当屏幕被锁定时,我会在应用程序被激活时出现一个对话框,它适用于 Lolipop、KitKat 和旧版本。这个问题似乎只出现在 V6 Marshmallow 中:对话框出现一秒钟,然后它似乎在后台消失了。但是,如果您按下对话应该在的位置,对话的活动就像对话真的在那里一样工作!我找到了很多关于这个问题的答案,但似乎没有一个对我有用。在 onCreate() 我设置了必要的标志:
// allow to be shown when screen is locked
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
// winParams.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
// winParams.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
winParams.flags |= WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
// winParams.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
win.setAttributes(winParams);
我也尝试禁用键盘保护但没有结果:
KeyguardManager myKeyGuard = (KeyguardManager) Context.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock myLock = myKeyGuard.newKeyguardLock(KEYGUARD_SERVICE);
myLock.disableKeyguard();
这是我在 AndroidManifest.xml 中的声明:
<activity
android:name="Activity"
android:showOnLockScreen="true"
android:theme="@style/Theme.Dialog" />
我注意到如果我从主题中删除 Dialog 样式,它会起作用。但我需要它成为一个对话!
请记住,此代码适用于除 V6 之外的所有版本!任何想法?