即使屏幕在 Android 中被锁定,启动活动屏幕

新手上路,请多包涵

即使屏幕已锁定,如何在设备上启动 Activity。我尝试如下,但它不工作。

广播接收器:

 Intent alarmIntent = new Intent("android.intent.action.MAIN");
        alarmIntent.setClass(context, Alarm.class);
        alarmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        alarmIntent.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED +
                             WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD +
                             WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON +
                             WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
        context.startActivity(alarmIntent);

原文由 yuva ツ 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 325
2 个回答

您需要 AndroidManifest.xml 文件中的以下权限:

 <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

此处 查看清单详细信息。您可以在查询时查看此 链接

原文由 Pradip 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以通过两种方式实现这一目标:

  1. 如本文中@Yup 所述,使用唤醒锁。

  2. 使用窗口标志。

使用窗口标志:

打开要在 onReceive(...) 中启动的活动 A。将此粘贴到活动 A 的 onCreate()

 final Window win= getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

确保你没有在之前粘贴它 setContentView(...) :-)

原文由 Junaid 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题