2015-03-13 55 views
0

我们有一个Android天气应用程序,该应用程序还提供了一个小部件。 小部件显示当前用户位置的当前时间和天气。logcat中缺少Google服务权限

如果显示器处于活动状态,则每分钟更新一次窗口小部件时钟(通过AlarmManager),天气数据的间隔时间更长。有时小部件“冻结”。我们能够追踪到下一次没有设置检查的警报,但是没有线索。

现在我们在受影响的设备的设备日志发现以下警告:

03-12 10:15:44.803 771 4958 W ActivityManager: Permission Denial: opening provider com.google.android.gsf.gservices.GservicesProvider from ProcessRecord{41a4d028 25012:com.my.app/u0a88} (pid=25012, uid=10088) requires com.google.android.providers.gsf.permission.READ_GSERVICES or com.google.android.providers.gsf.permission.WRITE_GSERVICES 

这开始于在时钟应该已经更新的时间恰好出现。然后重复该消息几次,直到ActivityManager终止该过程。

我们使用Google Play定位服务获取用户的当前(或最后知道的)位置。我发现引用了服务的版本4.2(here和https://stackoverflow.com/questions/22682538/when-to-use-read-gservices-permission)中可能导致此错误的错误,但设备版本6.7.76安装。

还有一件需要考虑的事情是该设备正在运行Cyanogenmod,虽然卡住的小部件问题也发生在具有“普通”Android的设备上。

任何提示可能会导致此权限错误非常感激。谢谢!

编辑:小部件和应用程序在这个和许多其他设备上正常工作,直到出现警告。 Google文档也没有提到你需要获得这些权限。实际上,根据现场搜索,唯一提及的是here in this document,但页面本身没有提及READ_GSERVICES

+0

是不是您引用的错误消息而不言自明? – 2015-03-13 15:03:32

+0

是的,但不是为什么它没有出现之前,为什么谷歌文档没有提及这些权限以及为什么它在数百万其他设备上工作。编辑:在大多数情况下,它在大多数情况下都是有效的。它也适用于此设备一段时间。 – Cornelius 2015-03-13 15:10:50

回答

2

两个权限,它要求:

<uses-permission android:name="com.google.android.providers.gsf.permisson.READ_GSERVICES"/>  
<uses-permission android:name="com.google.android.providers.gsf.permission.WRITE_GSERVICES"/> 

某事只记得,因为这个问题被报道在谷歌播放位置服务在4.2并不意味着它已得到修复。可能需要查看报告的Google bug,看看是否有人遇到任何问题。我发现了一些运行更新的Google Play服务的问题。

我自己做了一个快速的谷歌搜索似乎是主要问题的手机是Moto X和Nexus 5.这是相当有趣的,因为它们都是Android开源项目的错误(即运行Android的股票没有皮肤的手机! )

只是几个问题:

  • ,你能否证实什么手机你有和的Android版本,你 正在运行吗?
  • 另外您的目标SDK是什么?
  • APK中包含哪些版本的播放服务?
+0

感谢您的回答!奇怪的是,文档没有提到这些权限。我会在下周提供所需信息回复您(设备的同事不在了)。 – Cornelius 2015-03-13 16:45:15

+0

这里是所需的信息: **电话**:索尼C5303 cm-11-20150309-NIGHTLY(CyanogenMod), **目标SDK **:21, **播放服务**:6.5.87 – Cornelius 2015-03-16 08:51:26

+0

我只看到亚马逊设备的这个例外。这是非谷歌播放分布式设备的东西吗? – batmaci 2018-01-09 00:51:31