4

I have one specific user whose crashing all the time on this error (full stacktrace included). I'm pointing out that it's only one user because others have no problem whatsoever using the app and experience no such crash.

My manifest doesn't include the READ_GSERVICES permission anymore because my understanding was that it was no longer necessary for google maps (as per this doc). Any ideas why this issue is happening to this one particular user and to nobody else?

My original theory was that this was because the user was using an ancient version of Google Play Services on their phone (see this issue), but the user writes that they are using the "latest version". I am targeting play services version 8.4.0 in my gradle file at the moment. User is running android 6.0.1 and the latest version of my app.

Edit: I made a special apk for this user including the line:

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

and it solved the problem. However, I don't want to add what ought to be a useless line for all my users just to solve the problem of one user so the question still remains why this happens for this user at all?

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{[myPKG]}: java.lang.SecurityException: Permission Denial: opening provider com.google.android.gsf.gservices.GservicesProvider from ProcessRecord{myPKG} (pid=4, uid=3539) requires com.google.android.providers.gsf.permission.READ_GSERVICES or com.google.android.providers.gsf.permission.WRITE_GSERVICES
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
       at android.app.ActivityThread.-wrap11(ActivityThread.java)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:148)
       at android.app.ActivityThread.main(ActivityThread.java:5422)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by java.lang.SecurityException: Permission Denial: opening provider com.google.android.gsf.gservices.GservicesProvider from ProcessRecord{myPKG} (pid=4, uid=3539) requires com.google.android.providers.gsf.permission.READ_GSERVICES or com.google.android.providers.gsf.permission.WRITE_GSERVICES
       at android.os.Parcel.readException(Parcel.java:1620)
       at android.os.Parcel.readException(Parcel.java:1573)
       at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:3550)
       at android.app.ActivityThread.acquireProvider(ActivityThread.java:4783)
       at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2018)
       at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1468)
       at android.content.ContentResolver.query(ContentResolver.java:475)
       at android.content.ContentResolver.query(ContentResolver.java:434)
       at aff.b(:com.google.android.gms.DynamiteModulesB:225)
       at aff.a(:com.google.android.gms.DynamiteModulesB:244)
       at jx.(:com.google.android.gms.DynamiteModulesB:80)
       at jw.(:com.google.android.gms.DynamiteModulesB:139)
       at if.(:com.google.android.gms.DynamiteModulesB:159)
       at maps.af.av.a(Unknown Source)
       at maps.af.t.a(Unknown Source)
       at maps.af.M.a(Unknown Source:2000)
       at vw.onTransact(:com.google.android.gms.DynamiteModulesB:107)
       at android.os.Binder.transact(Binder.java:387)
       at com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onCreateView(Unknown Source)
       at com.google.android.gms.maps.SupportMapFragment$zza.onCreateView(Unknown Source)
       at com.google.android.gms.dynamic.zza$4.zzb(Unknown Source)
       at com.google.android.gms.dynamic.zza.zza(Unknown Source)
       at com.google.android.gms.dynamic.zza.onCreateView(Unknown Source)
       at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source)
       at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
       at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
       at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
       at android.support.v4.app.Fragment.performStart(Fragment.java:1996)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1102)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1234)
       at android.support.v4.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:2051)
       at android.support.v4.app.FragmentController.dispatchStart(FragmentController.java:185)
       at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)
       at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)
       at android.app.Activity.performStart(Activity.java:6268)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
       at android.app.ActivityThread.-wrap11(ActivityThread.java)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:148)
       at android.app.ActivityThread.main(ActivityThread.java:5422)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Community
  • 1
  • 1
Jon
  • 7,941
  • 9
  • 53
  • 105
  • 1
    I think that your user is not using "the latest version" of Google Play Services and is finding the issue that you mention. You can refer to http://stackoverflow.com/questions/18737632/how-to-check-google-play-services-version to see how to check the version programmatically – antonio May 20 '16 at 20:45
  • @antonio I sent the user a direct link to download Google Play Services. She said that doesn't see an 'update' button on the page but only an 'uninstall' button - so she definitely has the latest GPS version. – Jon May 23 '16 at 17:26
  • I too am having the same crash, also with just one user, also on 6.0.1. Was your user also using a Nexus 6? – Codiak Jul 09 '16 at 16:48
  • @Codiak - Huawei Nexus 6p – Jon Jul 09 '16 at 16:52
  • OK, mine is a Motorola Nexus 6. Strange that they're both Nexus devices, though. – Codiak Jul 09 '16 at 20:22

0 Answers0