Android:SecurityException READ_GSERVICES仅针对一个特定用户崩溃?

时间:2016-05-20 18:32:43

标签: android google-maps google-maps-android-api-2 android-support-library android-permissions

我有一个特定用户,他一直在崩溃这个错误(包括完整的堆栈跟踪)。我指出它只是一个用户,因为其他人使用该应用程序没有任何问题,并且没有遇到此类崩溃。

我的清单不再包含READ_GSERVICES权限,因为我的理解是谷歌地图不再需要(根据this doc)。有什么想法为什么这个问题发生在这个特定用户和其他人身上?

我原来的理论是,这是因为用户在手机上使用了古老版本的Google Play服务(请参阅this issue),但用户写道他们使用的是“最新版本”。我目前正在gradle文件中定位播放服务版本8.4.0。用户正在运行Android 6.0.1和我的应用程序的最新版本。

编辑:我为这个用户制作了一个特殊的apk,包括以下行:

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

它解决了这个问题。但是,我不想为所有我的用户添加一些无用的行只是为了解决一个用户的问题所以问题仍然存在为什么这个用户会发生这种情况呢?< / p>

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)

0 个答案:

没有答案