use*_*716 14 android google-analytics android-manifest android-permissions google-analytics-firebase
我正在尝试整合Google Analytics for Android.根据此处的文档,它要求添加android.permission.WAKE_LOCK(提供下面的注释说明).我不清楚它.如果我仅在Google Play商店中发布该应用,我是否还需要此功能?
如果不是绝对必要,我真的不想要求用户获得额外的许可.
<!-- Optional permission for reliable local dispatching on non-Google Play devices -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
Run Code Online (Sandbox Code Playgroud)
特别是,我不明白这个说明在这里的含义是什么:
可选地,可以请求WAKE_LOCK权限以改进非Google Play设备上的调度.
Ian*_*Ian 39
更新:从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">
Run Code Online (Sandbox Code Playgroud)
其次,添加"WAKE_LOCK"权限,但使用remove选项
<uses-permission android:name="android.permission.WAKE_LOCK" tools:node="remove" />
Run Code Online (Sandbox Code Playgroud)
现在,当我上传新的APK时,我可以看到不再需要该权限:
重要
似乎这种解决方案可能不再可行.我现在收到大量的RuntimeExceptions,其中包含消息"用户10182和当前进程都没有android.permission.WAKE_LOCK".
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.
Run Code Online (Sandbox Code Playgroud)
允许使用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
| 归档时间: |
|
| 查看次数: |
8027 次 |
| 最近记录: |