首页 文章

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

提问于
浏览
8

即使屏幕被锁定,如何在设备上启动活动 . 我尝试如下,但它不起作用 .

广播接收器:

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);

4 回答

  • 1

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

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

    检查清单详细信息here . 你可以查询这个link .

  • 13

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

    • 使用唤醒锁,正如@Yup在这篇文章中解释的那样 .

    • 使用窗口标志 .

    Using window flags:

    打开要在 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(...) 之前粘贴它:-)

  • 13

    关于屏幕是锁定还是解锁,您可以查看here .

    然后,您可以使用唤醒锁定和电源管理选项来维护屏幕而不会被锁定 . 你可以找到帮助here

  • 0
    • 清单文件赋予权限uses-permission android:name = "android.permission.WAKE_LOCK"然后在您的需求活动onCreate()中写入代码

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

相关问题