锁定屏幕上的 Android 活动

Posted

技术标签:

【中文标题】锁定屏幕上的 Android 活动【英文标题】:Android activity over lock screen 【发布时间】:2019-01-20 01:27:12 【问题描述】:

我的项目需要帮助,我应该让 BroadcastReceiver 在当前锁定屏幕上启动全屏活动。 我在我的活动中试过这个:

protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    Log.i("onCreate","success");
    PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);

    PowerManager.WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG");
    wakeLock.acquire(10*60*1000L /*10 minutes*/);
    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);
    this.setShowWhenLocked(true);
    this.setTurnScreenOn(true);
    setContentView(R.layout.activity_stop);

广播接收者:

Intent i = new Intent(context,StopTheAlarm.class);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);

androidManifest.xml:

<activity android:name=".Stop"
         android:showOnLockScreen="true"
         android:screenOrientation="sensorPortrait">
</activity>

但它不适用于我的 android 7.0.1 手机

【问题讨论】:

它是否适用于其他安卓版本?可能是您的广播接收器未在清单中注册的问题。 它已注册广播接收器工作正常由于缺乏资源我没有尝试其他版本 【参考方案1】:

更新: 我删除了

this.setShowWhenLocked(true);
this.setTurnScreenOn(true);

导致应用崩溃的原因

【讨论】:

【参考方案2】:

您的解决方案不适用于 Android API 27 及更高版本。使用来自 thread 的代码。

【讨论】:

以上是关于锁定屏幕上的 Android 活动的主要内容,如果未能解决你的问题,请参考以下文章

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

Android Galaxy S4 -- 在锁定屏幕上可见的活动

如何在android中启用“在锁定屏幕中显示”权限

Android:不活动后,Expo Notification 未显示在锁定屏幕上

在 Android Q 的锁定屏幕上收到 fcm 通知后开始活动

Android 全屏通知不会显示在锁定屏幕上