Мне нужен андроид.разрешение.WAKE LOCK для сервисов Google Play, если я выпускаю только в Google Play Store?

Я пытаюсь интегрировать Google Analytics для Android. Согласно документации, он просит добавить android.permission.WAKE_LOCK (предоставляет Примечание комментария ниже). Я не совсем понимаю. Если я выпускаю приложение только в Google Play Store, мне все еще нужно это?

Я действительно не хочу просить пользователей о дополнительном разрешении, если это не абсолютно необходимо.

<!-- Optional permission for reliable local dispatching on non-Google Play devices -->
<uses-permission android:name="android.permission.WAKE_LOCK" />

в частности, я не понимаю, что эта заметка на самом деле означает здесь:

дополнительно можно запросить разрешение WAKE_LOCK для улучшения диспетчеризации на устройствах, отличных от Google Play.

3 ответов


номера

позволяет использовать Powermanager WakeLocks, чтобы процессор не спал или экран от затемнения.

на устройствах Google Play фоновая служба почти всегда работает как "службы Google Play", поэтому WAKE_LOCK не требуется.

на устройствах, отличных от Google Play,WAKE_LOCK помогает сохранить процесс диспетчеризации / службы Google Analytics живым, чтобы у него было больше шансов сообщить / загрузить данные.

редактировать

кроме того, неясно, что происходит с опасными разрешениями в группах разрешений, которые не являются теми, которые пользователь может контролировать с помощью настроек, таких как SYSTEM_TOOLS.

https://commonsware.com/blog/2015/06/02/random-musings-m-developer-preview-bad.html


обновление: начиная с Android 6 (уровень API 23, WAKE_LOCK классифицируется как"нормальный" разрешение, то есть разрешение предоставляется автоматически. Удаление разрешения WAKE_LOCK часто приводит к сбою приложений (см. ниже), поэтому я бы этого не делал.


Я в том же положении. Я не хочу добавлять дополнительное разрешение, так как это значительно сократит количество людей, использующих последнюю версию приложения (поскольку новые разрешения означают пользователя необходимо явно выбрать, чтобы получить обновление приложения).

Я считаю, что мне удалось найти решение, объединив несколько ответов на это так вопрос.

Сначала добавьте пространство имен "tools" в манифест приложения

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools">

во-вторых, добавьте разрешение "WAKE_LOCK", но используйте опцию удаления

<uses-permission android:name="android.permission.WAKE_LOCK" tools:node="remove" />

Теперь, когда я загружаю новый APK, я вижу, что разрешение больше не требуется:

wake lock permission removed

важно

кажется, что это решение не может быть жизнеспособным. Теперь я получаю огромное количество RuntimeExceptions с сообщением " ни пользователь 10182, ни текущий процесс не имеют android.разрешение.Популярная."

Fatal Exception: java.lang.RuntimeException
Unable to start receiver com.google.android.gms.measurement.AppMeasurementReceiver: java.lang.SecurityException: Neither user 10182 nor current process has android.permission.WAKE_LOCK.

при удалении WAKE_LOCK также удалите AnalyticsReceiver и AnalyticsService.

этот путь написан на этом сайте. http://coffeee.hatenablog.com/entry/2017/11/26/035828

  1. открываем AndroidManifest.в XML
  2. перейдите на вкладку " Marged Manifest" Merged Manifest
  3. щелкните правой кнопкой мыши на WAKE_LOCK и удалите Remove WAKE_LOCK
  4. удалить AnalyticsReceiver и AnalyticsService Remove Receiver and Service

хорошее Удачи!--1-->