无法在锁定屏幕前获取我的活动

发布于 2025-01-15 17:53:01 字数 1473 浏览 4 评论 0原文

我想将我的活动放在锁定屏幕前面。我添加了我在互联网上看到的任何内容作为在锁定屏幕上打印活动的标志。

但在某些设备上我无法实现这一点:华为、小米等

public class MyActivity extends AppCompatActivity() {

private void adjustScreen() {
 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR |
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM |
WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS | 
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
        
        
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
    setShowWhenLocked(true);
    setTurnScreenOn(true);
        
    (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE)
    .requestDismissKeyguard(this, null);
  }
}

清单:

 <activity
   android:name=".MyActivity"
   android:configChanges="locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|screenSize|fontScale"
   android:excludeFromRecents="true"
   android:exported="true"
   android:launchMode="singleTask"
   android:screenOrientation="portrait"
   android:showOnLockScreen="true"
   android:showWhenLocked="true"
   android:turnScreenOn="true"/>

I want to put my activity in front of the lock screen. I added whatever I saw on the internet as a flag to print activity on the lock screen.

But on some devices I couldn't achieve this : Huawei, Xiaomi etc

public class MyActivity extends AppCompatActivity() {

private void adjustScreen() {
 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |
WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR |
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM |
WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS | 
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
        
        
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
    setShowWhenLocked(true);
    setTurnScreenOn(true);
        
    (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE)
    .requestDismissKeyguard(this, null);
  }
}

Manifest:

 <activity
   android:name=".MyActivity"
   android:configChanges="locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|screenSize|fontScale"
   android:excludeFromRecents="true"
   android:exported="true"
   android:launchMode="singleTask"
   android:screenOrientation="portrait"
   android:showOnLockScreen="true"
   android:showWhenLocked="true"
   android:turnScreenOn="true"/>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

筱武穆 2025-01-22 17:53:01

它仅适用于这些行:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

It only worked with these lines:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文