我正在开发一个NFC支付应用程序。即使设备已锁定,只要屏幕亮着,就可以进行付款,这与Android Pay的行为基本相同。在付款后,我想向用户显示胜利屏幕,以通知他有关付款结果(完成、错误、PIN请求等)。我将此添加到清单中。
在onCreate方法中,我设置了这些标志。
大多数设备上都能正常工作。但是,一旦我将 Nexus 5X 更新到 Android 8.1 后,它就停止工作了。NFC 交易在后台完成,没有任何问题,但是当我的手机处于锁屏状态且屏幕已打开时,胜利屏幕根本没有显示出来。当 5X 解锁后,它会毫无问题地启动活动。然后我发现,只有在应用程序不在后台运行时(当我进入设置并强制停止我的应用程序时),它才不能正常工作。当我打开应用程序并将其留在后台时,然后锁定手机并打开屏幕时,它可以正常工作。但是当应用程序完全未运行时,它将无法显示我的活动。在其他设备上,如搭载 Andorid 7.0 的 Samsung S8 上,即使我强制停止我的活动并锁定手机,它也可以正常工作。我在 Nexus 5X 上测试了 Android Pay 并在锁屏时工作。因此,在锁屏时启动活动仍然是可能的,但我可能遗漏了某些内容。谢谢您的帮助。
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
在onCreate方法中,我设置了这些标志。
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
大多数设备上都能正常工作。但是,一旦我将 Nexus 5X 更新到 Android 8.1 后,它就停止工作了。NFC 交易在后台完成,没有任何问题,但是当我的手机处于锁屏状态且屏幕已打开时,胜利屏幕根本没有显示出来。当 5X 解锁后,它会毫无问题地启动活动。然后我发现,只有在应用程序不在后台运行时(当我进入设置并强制停止我的应用程序时),它才不能正常工作。当我打开应用程序并将其留在后台时,然后锁定手机并打开屏幕时,它可以正常工作。但是当应用程序完全未运行时,它将无法显示我的活动。在其他设备上,如搭载 Andorid 7.0 的 Samsung S8 上,即使我强制停止我的活动并锁定手机,它也可以正常工作。我在 Nexus 5X 上测试了 Android Pay 并在锁屏时工作。因此,在锁屏时启动活动仍然是可能的,但我可能遗漏了某些内容。谢谢您的帮助。