java – 通过“始终在线显示”和锁定屏幕启动应用程序
我有一个应用程序,如果它收到一条消息,它就自己启动.
为此,我使用此启动参数: BackgroundService.java: Intent intent = new Intent(this,MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) .addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD) .addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED) .addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON) .addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); startActivity(intent); MainActivity.java – >的onCreate: getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 现在我从我的应用程序的用户收到一条消息,说这不适用于他的“三星Galaxy S7”,他注意到,他使用了“Always On Display”功能. 我在网上搜索了一段时间,但我找不到解决方案. 解决方法
我遇到了类似的问题.您添加到Intent的标志不适用于Intent,但是对于Window – 不需要在那里添加它们.您可以在onCreate()中正确使用它们.但问题不在于旗帜.
在我的情况下,问题是我尝试启动的Activity使用了一个主题,它具有< item name =“android:windowIsFloating”> true< / item>在里面.我重写了我的逻辑,所以我不必使用它. PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); screenWakeLock = powerManager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK,"TEST"); 然后你可以打电话 screenWakeLock.acquire(5000); 在设置标志之前.您可以编辑超时当然.这有点像黑客,因为不推荐使用PowerManager.SCREEN_DIM_WAKE_LOCK.但它适用于搭载Android 8.0和三星体验版9.0的三星.整个事情显然是一些三星问题,因为相同的代码,没有变通方法就像带有永远打开的Pixel Ambient显示器的魅力. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |