Android GoogleAuthUtil.getToken安全性异常

Android GoogleAuthUtil.getToken安全性异常,android,google-play-services,Android,Google Play Services,当我试图调用GoogleAuthUtil.getToken(args)时,我在一个具有最新Google Play服务的ICS设备上遇到了这个故障。这个问题通过删除谷歌账户并将其添加到手机中得以解决。我无法重现这个错误。谷歌搜索堆栈跟踪没有提供任何见解。任何关于如何预防这一问题以及它的意义的想法都将受到赞赏 W/System.err( 3145): java.lang.SecurityException: Permission Denial: reading com.google.android.

当我试图调用GoogleAuthUtil.getToken(args)时,我在一个具有最新Google Play服务的ICS设备上遇到了这个故障。这个问题通过删除谷歌账户并将其添加到手机中得以解决。我无法重现这个错误。谷歌搜索堆栈跟踪没有提供任何见解。任何关于如何预防这一问题以及它的意义的想法都将受到赞赏

W/System.err( 3145): java.lang.SecurityException: Permission Denial: reading com.google.android.gsf.gservices.GservicesProvider uri content://com.google.android.gsf.gservices/prefix from pid=3145, uid=10055 requires com.google.android.providers.gsf.permission.READ_GSERVICES
W/System.err( 3145):    at android.os.Parcel.readException(Parcel.java:1327)
W/System.err( 3145):    at android.os.Parcel.readException(Parcel.java:1281)
W/System.err( 3145):    at com.google.android.gms.internal.a$a$a.a(Unknown Source)
W/System.err( 3145):    at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
W/System.err( 3145):    at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
W/System.err( 3145):    at com.xxxxx.Backend.obtainSheetKeyAndInitService(Backend.java:112)
W/System.err( 3145):    at com.xxxxx.Backend.fetchColumns(Backend.java:103)
W/System.err( 3145):    at com.xxxxx.ProgressActivity$DummySectionFragment$3.doInBackground(ProgressActivity.java:288)
W/System.err( 3145):    at com.xxxxx.ProgressActivity$DummySectionFragment$3.doInBackground(ProgressActivity.java:1)
W/System.err( 3145):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
W/System.err( 3145):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
W/System.err( 3145):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
W/System.err( 3145):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
W/System.err( 3145):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
W/System.err( 3145):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
W/System.err( 3145):    at java.lang.Thread.run(Thread.java:856)
编辑

截至报告错误时:

  • google_play_services-lib android:versionName=“3.2.65(834000-30)”
  • 设备4.0.31上的Google Play Services版本
将库更新为4.0.30,并添加了对清单的请求权限,该权限似乎有效。等待Google确认新库版本修复了这个问题,因为添加新权限是一个非常不受欢迎的修复

错误报告:

您应该添加

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


AndroidManifest.xml
文件。仅此而已。

今天2013-11-14,由于这一例外情况,我们收到的错误报告数量大幅下降。我还看到Google Play Services 4.0.33版发布了,我没有注意到它的确切发布时间,但看起来就像昨天一样

也许谷歌发布了4.0.33版本的补丁?那太好了

如果有人能够复制此错误,请告诉我们4.0.33是否为您修复了此错误。(我们从未能够在开发设备上重现这个bug,尽管我们的安装基础上有无数的跟踪记录。)


[更新]谷歌确实推出了一个修复方案,我们在11月15日只有少数几份报告,11月16日为零

你是否请求
com.Google.android.providers.gsf.permission.READ\u GSERVICES
权限,正如错误所示?不,谷歌Play服务的文档没有说我应该这样做。此外,我似乎无法重现这个错误——在大多数情况下,它在未经许可的情况下工作。我想我可以把这个许可加入清单,希望它能阻止这个问题的发生。谢谢您能否更新您的问题,以包括错误发生时您正在使用的Google Play服务的版本?看起来这可能是最新版本中的一个bug。我们的应用程序也出现了这种情况。今天有1200起车祸。越来越多的用户受到影响。我们正在准备一个补丁,有以下更改:1。添加“读取服务”权限2。使用最新的Google Play服务Api。希望谷歌能在我们发布之前解决这个问题。。。关于这一点,有一个Android错误报告:这个错误似乎是由Google Play服务4.0引入的。我已将权限com.google.android.providers.gsf.permission.READ_GSERVICES添加到我的应用程序中,并将在接下来的几天内查看它是否有帮助……这确实解决了问题,但很糟糕的是,我们必须快速部署,要求获得新的权限,这总是阻止用户升级。我想听听谷歌关于这个问题的原因,以及Google是否可以删除getToken()的此权限依赖项,而无需应用程序添加此权限。正如@Maragues所说,我们无法强迫所有用户升级。这是一个非常严重的操作系统退化,我们不想添加任何不必要的权限。阅读服务没有很好的文档记录。有人提到这是最糟糕的请求权限。如果你在应用程序中使用谷歌地图,你必须包含此权限。我看不出有什么坏处。你正在使用谷歌的服务,你应该获得使用这些服务的许可。不过,仅仅为了这个权限而升级是令人难过的。我们也希望在添加权限之前听到一些来自谷歌的官方消息。最终我想我们要么添加神秘许可要么删除GPS。但如果谷歌能够确认这一问题,以及他们能做些什么来防止未来出现类似问题,那将是一件好事。我们不能让我们的安装用户群突然像这样崩溃,唯一能救我们的是我们把所有的GPS呼叫都打包在了一个完整的try/catch中。但是我们的下一个版本需要auth,所以我们需要选择一个解决方案。play store确实说这些服务是昨天更新的(14.11)-