GoogleAuthUtil.getToken SecurityException

Я получал эту ошибку на устройстве ICS с последними службами Google Play при попытке вызвать GoogleAuthUtil.getToken(args). Проблема была решена путем удаления и добавления учетной записи Google на телефон. Я не смог воспроизвести ошибку. Трассировка стека поиска 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)

ИЗМЕНИТЬ

С момента сообщения об ошибке:

  • google_play_services-lib android: versionName = "3.2.65 (834000-30)"
  • Версия Google Play Services на устройстве 4.0.31

Обновлена ​​библиотека до версии 4.0.30 и добавлено запрашиваемое разрешение на манифест, который, похоже, сработал. Ожидание подтверждения Google того, что новая версия библиотеки устраняет эту проблему, поскольку добавление нового разрешения является крайне нежелательным исправлением.

Отчет об ошибке: http://code.google.com/p/android/issues/detail?id=61934

Ответ 1

Вы должны добавить

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

в файл AndroidManifest.xml. Вот и все.

Ответ 2

Сегодня 2013-11-14 произошло значительное сокращение количества отчетов об ошибках, которые мы получили из-за этого исключения. Также я вижу, что Google Play Services версии 4.0.33 отсутствует, я не заметил точно, когда это было выпущено, но похоже, что вчера.

Возможно, Google выпустил исправление в 4.0.33? Это было бы здорово!

Если кто-то смог воспроизвести эту ошибку, сообщите нам, если 4.0.33 исправляет ее для вас. (Мы никогда не смогли воспроизвести ошибку на устройстве dev, хотя у нас есть миллионы следов от нашей установленной базы.)

[ОБНОВЛЕНИЕ] Google определенно подтолкнула исправление, у нас было всего несколько отчетов на 11/15 и ноль на 11/16