【问题标题】:Google Play Services + Android Studio EmulatorGoogle Play 服务 + Android Studio 模拟器
【发布时间】:2015-08-02 08:07:15
【问题描述】:

我最近在使用 Android Studio 模拟器时遇到了这个问题,我不明白它是如何出现的以及为什么会出现,因为直到现在我的模拟器和应用程序都运行良好。

现在,当我尝试运行我的应用(使用 Google 地图和 Google Places Autocompletion)时,一条消息显示未安装 Google Play 服务。我设法将它安装在我的模拟器上,但该应用程序仍然无法正常工作。出现 Google 地图,但 Google 地方信息自动完成功能不再起作用。

我注意到这是 Android 开发人员中的一个常见问题,经过一些研究,我一直在尝试调整一些解决方案,但问题仍然存在。

谁能帮我解决这个问题并向我解释为什么会这样?是因为一些 Android Studio 更新了吗?

(错误消息)

    05-20 21:56:52.528: A/GmsApplication(2108): Unable to install secure provider, due to exception:

    05-20 21:56:52.528: A/GmsApplication(2108): java.lang.SecurityException: attempting to read gservices without permission: Neither user 10053 nor current process has com.google.android.providers.gsf.permission.READ_GSERVICES.

    05-20 21:56:52.528: A/GmsApplication(2108):     at android.app.ContextImpl.enforce(ContextImpl.java:1914)

    05-20 21:56:52.528: A/GmsApplication(2108):     at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:1943)

    05-20 21:56:52.528: A/GmsApplication(2108):     at android.content.ContextWrapper.enforceCallingOrSelfPermission(ContextWrapper.java:600)

    05-20 21:56:52.528: A/GmsApplication(2108):     at com.google.android.gsf.f.c(SourceFile:107)

    05-20 21:56:52.528: A/GmsApplication(2108):     at com.google.android.gsf.f.a(SourceFile:121)

    05-20 21:56:52.528: A/GmsApplication(2108):     at com.google.android.gsf.f.a(SourceFile:227)

    05-20 21:56:52.528: A/GmsApplication(2108):     at com.google.android.gms.common.a.l.a(SourceFile:301)

    05-20 21:56:52.528: A/GmsApplication(2108):     at com.google.android.gms.common.a.e.a(SourceFile:219)

    05-20 21:56:52.528: A/GmsApplication(2108):     at com.google.android.gms.common.a.d.c(SourceFile:197)

    05-20 21:56:52.528: A/GmsApplication(2108):     at com.google.android.gms.common.a.d.d(SourceFile:208)

    05-20 21:56:52.528: A/GmsApplication(2108):     at com.google.android.gms.common.security.ProviderInstallerImpl.insertProviderGated(SourceFile:90)

    05-20 21:56:52.528: A/GmsApplication(2108):     at com.google.android.gms.common.app.GmsApplication.onCreate(SourceFile:84)

    05-20 21:56:52.528: A/GmsApplication(2108):     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1012)

    05-20 21:56:52.528: A/GmsApplication(2108):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4556)

    05-20 21:56:52.528: A/GmsApplication(2108):     at android.app.ActivityThread.access$1500(ActivityThread.java:151)

    05-20 21:56:52.528: A/GmsApplication(2108):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)

    05-20 21:56:52.528: A/GmsApplication(2108):     at android.os.Handler.dispatchMessage(Handler.java:102)

    05-20 21:56:52.528: A/GmsApplication(2108):     at android.os.Looper.loop(Looper.java:135)

    05-20 21:56:52.528: A/GmsApplication(2108):     at android.app.ActivityThread.main(ActivityThread.java:5257)

    05-20 21:56:52.528: A/GmsApplication(2108):     at java.lang.reflect.Method.invoke(Native Method)

    05-20 21:56:52.528: A/GmsApplication(2108):     at java.lang.reflect.Method.invoke(Method.java:372)

    05-20 21:56:52.528: A/GmsApplication(2108):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)

    05-20 21:56:52.528: A/GmsApplication(2108):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)


    05-20 21:56:52.552: D/AndroidRuntime(2108): Shutting down VM


    05-20 21:56:52.560: E/AndroidRuntime(2108): FATAL EXCEPTION: main

    05-20 21:56:52.560: E/AndroidRuntime(2108): Process: com.google.android.gms, PID: 2108

    05-20 21:56:52.560: E/AndroidRuntime(2108): java.lang.RuntimeException: Unable to start receiver com.google.android.gms.subscribedfeeds.ConfigurationReceiver: java.lang.SecurityException: attempting to read gservices without permission: Neither user 10053 nor current process has com.google.android.providers.gsf.permission.READ_GSERVICES.

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2619)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at android.app.ActivityThread.access$1700(ActivityThread.java:151)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1380)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at android.os.Handler.dispatchMessage(Handler.java:102)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at android.os.Looper.loop(Looper.java:135)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at android.app.ActivityThread.main(ActivityThread.java:5257)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at java.lang.reflect.Method.invoke(Native Method)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at java.lang.reflect.Method.invoke(Method.java:372)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

    05-20 21:56:52.560: E/AndroidRuntime(2108): Caused by: java.lang.SecurityException: attempting to read gservices without permission: Neither user 10053 nor current process has com.google.android.providers.gsf.permission.READ_GSERVICES.

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at android.app.ContextImpl.enforce(ContextImpl.java:1914)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:1943)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at android.content.ContextWrapper.enforceCallingOrSelfPermission(ContextWrapper.java:600)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at com.google.android.gsf.f.c(SourceFile:107)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at com.google.android.gsf.f.a(SourceFile:121)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at com.google.android.gsf.f.a(SourceFile:182)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at com.google.android.gms.subscribedfeeds.ConfigurationReceiver.onReceive(SourceFile:31)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2612)

    05-20 21:56:52.560: E/AndroidRuntime(2108):     ... 9 more

【问题讨论】:

    标签: android google-maps autocomplete google-play-services


    【解决方案1】:

    您必须在具有 Google API 的模拟器上运行应用程序,这是您创建模拟器时的一个选项。只需使用 Google API 选择目标,请参见下图:

    【讨论】:

    • 我已经尝试过了,但问题仍然存在。我应该尝试使用较低的 API 级别吗?我正在使用 22 级(棒棒糖)...
    • 试试其他模拟器也无妨
    • 如果您可以在此处复制并粘贴错误消息
    • 我认为您需要在清单中声明一个权限。您是否声明了所有需要的权限?
    【解决方案2】:

    确保您的应用也安装了 Google Play 服务。如果您还没有这样做,请在 build.gradle 文件中添加以下依赖项:

    dependencies {
        compile 'com.android.support:appcompat-v7:21.0.3'
        compile 'com.google.android.gms:play-services:7.3.0'
    }
    

    完成此操作后保存更改并单击工具栏中的 Sync Project with Gradle Files。

    如果您要访问 Google Play 服务功能,强烈建议您使用 GoogleApiClient 类。要检测设备是否具有适当版本的 Google Play 服务 APK,请实现 onConnectionFailed() 回调方法。如果由于缺少或过期的 Google Play APK 版本而导致连接失败。

    如果自动完成 API 不起作用,请检查 API_KEY 是否也添加到清单文件中,调用 GeoDataApi.getAutocompletePredictions() 以字符串和 LatLngBounds 的形式传递查询。更多信息请参考以下documentation

    【讨论】:

      猜你喜欢
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 2015-11-13
      • 2015-10-11
      • 1970-01-01
      相关资源
      最近更新 更多