GoogleAuthUtil.getToken SecurityException

zav*_*ych 15 android google-play-services

在尝试调用GoogleAuthUtil.getToken(args)时,我在使用最新Google Play服务的ICS设备上遇到此故障.通过删除Google帐户并将其添加到手机中解决了该问题.我无法重现错误.谷歌搜索堆栈跟踪没有提供任何见解.关于如何防止这个问题以及它意味着什么的任何想法都值得赞赏!

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)
Run Code Online (Sandbox Code Playgroud)

编辑

截至报告错误时:

  • google_play_services-lib android:versionName ="3.2.65(834000-30)"
  • 设备4.0.31上的Google Play服务版

将库更新到4.0.30并向Manifest添加了请求的权限,这似乎已经有效.等待Google确认新的库版本修复了此问题,因为添加新权限是一项非常不受欢迎的修复.

错误报告:http://code.google.com/p/android/issues/detail?id = 61934

tas*_*iac 2

你应该添加

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml文件。就这样。

  • 这确实解决了问题,但可怕的是我们必须进行快速部署,请求新的权限,这总是阻止用户升级 (6认同)
  • 我想听听 Google 的意见,了解导致此问题的原因,以及 Google 是否可以删除 getToken() 的此权限依赖项,而无需应用程序添加此权限。正如@Maragues 所说,我们无法强制所有用户升级。这是一个非常严重的操作系统回归 (6认同)