I am trying to integrate Google Analytics for Android. As per the documentation here, it asks to add android.permission.WAKE_LOCK
(provides the comment note below). I dont understand it clearly. If I am releasing the app ONLY in the Google Play Store, do I still need this?
I really do not want to ask users for an additional permission if this is not absolutely necessary.
<!-- Optional permission for reliable local dispatching on non-Google Play devices -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
In particular, I do not understand what this note actually means here:
Optionally a WAKE_LOCK permission can be requested to improve dispatching on non-Google Play devices.
On Google Play devices, a background service is almost always running as "Google Play Services", so
WAKE_LOCK
is not required.On non-Google Play devices,
WAKE_LOCK
helps keeping the dispatching process / service of Google Analytics alive so it has more chances to report / upload data.EDIT
https://commonsware.com/blog/2015/06/02/random-musings-m-developer-preview-bad.html
Update: As of Android 6 (API level 23, WAKE_LOCK is classed as a "normal" permission, meaning the permission is automatically granted. Removing the WAKE_LOCK permission will often cause apps to crash (see below) so I would avoid doing it.
I'm in the same position. I don't want to add an extra permission as it will significantly reduce the number of people using the latest version of the app (as new permissions mean the user must explicitly opt in to receive the app update).
I believe I have managed to find a solution by combining a few of the answers on this SO question.
First, add "tools" namespace to the app's manifest
Second, add the "WAKE_LOCK" permission but use the remove option
Now, when I upload a new APK I can see the permission is no longer required:
Important
It seems like this solution may no longer be viable. I'm now getting a huge number of RuntimeExceptions being thrown with the message "Neither user 10182 nor current process has android.permission.WAKE_LOCK."
When removing WAKE_LOCK, also remove AnalyticsReceiver and AnalyticsService.
That way is written on this site. http://coffeee.hatenablog.com/entry/2017/11/26/035828
Good Luck