【问题标题】:Android Lollipop - Bypass lock screen for popup activityAndroid Lollipop - 为弹出活动绕过锁定屏幕
【发布时间】:2015-07-11 18:33:32
【问题描述】:

我有Activity1,这是一个项目列表屏幕。每个项目都可以在单独的Activity2 中查看,该Activity2 显示为弹出窗口。 Activity1 可以从后台启动并在屏幕锁定时显示。 Activity1 也可以选择通过启动Activity2 在列表屏幕中自动显示项目的内容。我们可以绕过锁定屏幕,因为这两个活动都在OnCreate 方法中启用了WindowManagerFlags.DismissKeyguard

在 Android Lollipop 之前,一切都按预期工作。但现在弹出Activity2 不可见,除非手动解锁设备。如果我将Activity2 更改为全屏Activity,那么一切似乎都正常(除了从一个活动转换到另一个活动将短暂显示锁定屏幕)。有关如何干净地解决此问题的任何想法?

另外,我只试用过配备此新 Knox 安全功能的 Galaxy S6/S6 Edge 设备。

编辑我已将Activity2 更改为DialogFragment,而不是Activity。这对我最有效,因为建议的答案使用了已弃用或过时的代码,具体取决于目标 sdk。 Activity1 正在使用以下标志在需要时绕过锁定屏幕。

getWindow().addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);

由于Activity2 现在只是一个DialogFragment,它使用父Activity1 的窗口标志。我还删除了 "android.intent.action.SCREEN_OFF" 操作上的这些标志,以便活动仅在作为通知启动时绕过锁定屏幕,而不是每次活动位于顶部时堆。答案中提到的权限是必需的。

【问题讨论】:

  • 我最终不得不使用 DialogFragment 来代替弹出活动。这导致了一大堆其他问题和代码重组,但至少我可以解决这些问题。
  • 您好,请问您是如何让 Activity1 显示在锁屏上的?

标签: android android-activity popup android-5.0-lollipop lockscreen


【解决方案1】:

当然,这个 sn-p 应该可以帮助你(与 Lollipop 一起使用):

        PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
        wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "My Tag");
        wl.acquire();

        KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
        keyguardLock = keyguardManager.newKeyguardLock("TAG");
        keyguardLock.disableKeyguard();

当离开您的活动时(即 onStop()、onPause() 和 onDestroy()):

keyguardLock.reenableKeyguard();

另外,不要忘记权限:

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

【讨论】:

  • 改成onPause()
  • 是的,甚至在onDestroy() 中也是如此。
  • 你试过了吗?我在我的棒棒糖上使用它,效果很好。
  • 是:Android.App.KeyguardManager.KeyguardLock' 已过时:'此类在此 android 平台中已过时'。我将不得不更改目标版本,然后它可能会起作用。但对话片段解决方案也适用。但你可能有要点。
  • @EliranKuta 嗨,这是所有必需的代码。我不使用以上任何东西。按原样工作:)
猜你喜欢
  • 2019-01-20
  • 2015-07-17
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多