«Должен указывать действительный уровень блокировки пробуждения», выдаваемый только в Pixel 2 XL (API 22) - PullRequest
0 голосов
/ 27 февраля 2019

Я получаю wakelock следующим образом:

PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
mWakeLock = pm.newWakeLock(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WAKELOCK_TAG);
mWakeLock.acquire(WAKELOCK_TIMEOUT);

Это работает для всех устройств, которые я использовал до сих пор:

  • Moto G4 (API 24) (реальный)
  • Nexus 5X (API 28) (эмулятор)
  • Nexus 5X (API 24) (эмулятор)
  • Huawei P20 Pro (API 26) (реальный)
  • Pixel 2 XL (API 24) (эмулятор)

Не работает для:

  • Nexus 4 (API 22) (эмулятор)
  • Pixel 2 XL (API 22) (эмулятор)

Так что, похоже, по какой-то причине это не работает для API уровня 22.

Но согласно документации FLAG_KEEP_SCREEN_ON , он существует с API 1 и поэтому должен использоваться где угодно.

StackTrace:

02-27 12:13:50.775 6158-6158/com.myProject.lite E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.myProject.lite, PID: 6158
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myProject.lite/com.myProject.lite.myActivity}: java.lang.IllegalArgumentException: Must specify a valid wake lock level.
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
        at android.app.ActivityThread.access$800(ActivityThread.java:151)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5254)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
    Caused by: java.lang.IllegalArgumentException: Must specify a valid wake lock level.
        at android.os.PowerManager.validateWakeLockParameters(PowerManager.java:494)
        at android.os.PowerManager.newWakeLock(PowerManager.java:479)
        at com.myProject.lite.myActivity.onCreate(myActivity.java:103)
        at android.app.Activity.performCreate(Activity.java:5990)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)

Почему это происходит только в API 22 икак я могу решить эту проблему?

...