我有一个后台服务,它有一个到家庭服务器的websocket连接 .

每天早上,这个服务器都会向我的服务发送一个命令,然后通过使用,启动VLC,并通过一个传递的URL

Intent i = new Intent();
i.setAction(Intent.ACTION_VIEW);
i.setComponent(new ComponentName("org.videolan.vlc", "org.videolan.vlc.gui.video.VideoPlayerActivity"));
i.setData(Uri.parse('http://st01.dlf.de/dlf/01/128/mp3/stream.mp3'));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);

我试过添加

i.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
         WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
         WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
         WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON );

以及

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

WAKE_LOCK 已存在,我还明确调用了其他一些WakeLock获取代码)

现在我改变了两件事,我不知道是什么导致了这个问题:

  • 我添加了这个屏幕保护内容(模式/ PIN /指纹),以前这个设备没有这样的保护,按下开机按钮会直接显示主屏幕(或最顶层的活动)

  • 我升级到Android Pie

我怎样才能“解决”这个问题 . 我看到闹钟应用程序能够以某种方式解决这个问题,但我不知道如何 .