如果我只在Google Play商店中发布,我是否需要android.permission.WAKE_LOCK用于Google Play服务?

时间:2015-06-21 00:51:42

标签: android google-analytics android-manifest android-permissions google-analytics-v4

我正在尝试整合Google Analytics for Android。根据 documentation here ,它要求添加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" />

特别是,我不明白这个说明实际上意味着什么here

  

可以选择使用WAKE_LOCK权限来改善非Google Play设备的调度。

2 个答案:

答案 0 :(得分:39)

更新:从Android 6开始(API级别23,WAKE_LOCK被归类为&#34; normal&#34;权限,这意味着会自动授予权限。删除WAKE_LOCK权限通常会导致应用程序崩溃(见下文)所以我会避免这样做。

我处于同一个位置。我不想添加额外的权限,因为它会显着减少使用最新版本应用的人数(因为新权限意味着用户必须明确选择接收应用更新)。

我相信我已经设法通过结合this SO question上的一些答案找到了解决方案。

首先,添加&#34;工具&#34;应用程序清单的命名空间

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

其次,添加&#34; WAKE_LOCK&#34;权限,但使用删除选项

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

现在,当我上传新的APK时,我可以看到不再需要该权限:

wake lock permission removed

重要

似乎这种解决方案可能不再可行。我现在收到大量的RuntimeExceptions,其中包含消息&#34;用户10182和当前进程都没有android.permission.WAKE_LOCK。&#34;

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.

答案 1 :(得分:3)

删除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
  5. 祝你好运