我有一个可以唤醒屏幕的应用程序,它在Android 6至11的早期版本上完美运行。升级到Android 14后,它不再起作用。我已修改我的代码以纳入建议的折旧修复。然而它就是行不通。它仍然可以在我的旧 Android 6 手机上运行,但不能在我新升级的 Android 14 手机上运行,Astudio 模拟也是如此。这个问题已在其他地方得到解决,但修复对我不起作用。下面的代码位于 Main 的开头。当片段中运行的代码完成返回主调用的意图时:
Intent意图 = new Intent(getActivity(), MainActivity.class);
startActivity(意图);
在折旧之前,当程序返回主屏幕时,屏幕会唤醒,以便用户选择下一步操作。 不知道我缺少什么,我已添加到清单中:
// MainActivity 中的 Java 代码 :
公共类 MainActivity 扩展 AppCompatActivity {
私有静态最终 int MY_REQUEST_CODE_PERMISSION = 1000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= 27) {
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
setShowWhenLocked(true);
setTurnScreenOn(true);
KeyguardManager guardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
guardManager.requestDismissKeyguard(this, null);
} else {
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Window window = this.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
} }
//清单:
我找到了一个解决方案,解决方案是将所有应用程序代码从片段移动到 MainAcitivity 并在 MainAcitivity 末尾创建一个唤醒方法 void waky(){ // 唤醒代码 } 然后在应用程序代码完成时调用唤醒方法:void waky();