San*_*dak 4 android android-service android-fragments android-activity android-8.1-oreo
我正在研究NFC支付应用程序.即使设备被锁定,屏幕打开时也可以付款.与Android Pay基本相同的行为.付款后,我想向用户显示胜利屏幕,告知他付款结果 - 完成,错误,引脚请求等.
我把它添加到清单中
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
Run Code Online (Sandbox Code Playgroud)
在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);
Run Code Online (Sandbox Code Playgroud)
它在大多数设备上运行良好.但是一旦我将Nexus 5X更新到Android 8.1,它就停止了工作.NFC交易在后台完成,没有任何问题,但当我的手机处于锁定屏幕且屏幕打开时,根本不显示胜利屏幕.当5X解锁时,它会毫无问题地启动活动.然后我发现只有当应用程序没有在后台运行时才会起作用(当我进入设置并强制停止我的应用程序时).当我打开应用程序并将其保留在后台时,然后锁定我的手机并打开屏幕 - 它正在工作.但是当应用程序根本没有运行时 - 它将不会显示我的活动.在其他设备上,例如带有Andorid 7.0的三星S8,即使我强制停止我的活动并锁定手机也能正常工作.
我使用Android 8.1在5X上测试了Android Pay,它正在使用锁定屏幕.因此仍然可以在锁定屏幕上启动活动,但我可能在那里遗漏了一些东西.
先谢谢你.
Ben*_*min 10
在Android 8.1(API 27),WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
并WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
已被弃用.
您现在应该activity
在清单中的条目中添加以下内容:
android:showWhenLocked="true"
android:turnScreenOn="true"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2048 次 |
最近记录: |