【问题标题】:Google Play services: How to handle devices that do not have Google Play?Google Play 服务:如何处理没有 Google Play 的设备?
【发布时间】:2012-11-02 08:40:01
【问题描述】:

Google Play services 是一个 Android 库,其目标是提供:

  • OAuth 2.0 身份验证
  • Google+ 登录
  • Google+ +1 按钮
  • 其他各种好东西

如果我要使用它(例如,因为我想登录 Google+),那么设备上没有 Google Play 的用户会怎样? (Nook、Cyanogenmod、中国移动、旧设备、maybe Huawei?等)

问题:我的应用会与此类设备不兼容吗?它会显示为兼容但随后崩溃,还是无法正常工作?
在使用 Google Play 服务时,是否有最佳做法可以牢记这一点?

【问题讨论】:

    标签: android cyanogenmod google-play-services lock-in


    【解决方案1】:
    GooglePlayServicesUtil.isGooglePlayServicesAvailable(android.content.Context)
    

    已弃用!

    用途:

     GoogleApiAvailability api = GoogleApiAvailability.getInstance();
            int code = api.isGooglePlayServicesAvailable(activity);
            if (code == ConnectionResult.SUCCESS) {
               // Do Your Stuff Here
            } else {
               AlertDialog alertDialog =
                     new AlertDialog.Builder(activity, R.style.AppCompatAlertDialogStyle).setMessage(
                           "You need to download Google Play Services in order to use this part of the application")
                           .create();
               alertDialog.show();
            }
    

    【讨论】:

    • 无需自己创建对话框,使用 GoogleApiAvailability.getInstance().getErrorDialog(activity, code, 0).show();
    【解决方案2】:

    如果 Google Play 服务中的功能对您的应用至关重要,那么您的应用将无法正常运行。

    您可以使用GooglePlayServicesUtil.isGooglePlayServicesAvailable(android.content.Context)检查是否在您的应用中启用了这些服务
    如果播放服务可用,则返回 ConnectionResult.SUCCESS

    您现在可以尝试说服用户安装它(如果可能)或禁用正在使用该服务的功能。

    由于 Google Play 服务不是清单中声明的​​功能,因此您的应用应该可以在任何设备上正常安装,但如果您在未检查 API 是否可用的情况下使用这些 API,则以后可能会崩溃。

    您可以使用模拟器尝试该行为。只需在没有 Google API 的情况下创建一个 AVD 并将您的应用放在上面。

    【讨论】:

    【解决方案3】:

    如果您的应用使用 Google 登录或 Firebase Cloud Messaging 等 GMS 功能,则它无法在没有 GMS 的设备上正常运行。 如果设备支持 GMS,建议您使用 GMS;否则,请使用 HMS(华为移动服务)。

    请参考以下链接:

    因此,您可以在支持 GMS 的设备上使用 Google+ 登录;否则,请使用华为帐号登录。

    【讨论】:

      【解决方案4】:

      如果您因某种原因需要使用 Play 服务,或者如果您维护一个调用 Play 服务的旧版应用程序,那么我建议您采用以下策略:

      1. 在应用启动时,检查播放服务是否可用
      2. 如果不可用,请将 Play 服务调用重定向到 microG

      microG 是 Google Play 服务的开源实现。
      它缺乏许多功能,但正在积极开发中。许多功能仍然是存根。

      对于位置服务,还有LOST,它是 Google Play 服务位置 API 的直接替代品。

      您的应用可能无法完美运行,但至少比崩溃要好。

      当然,最好从一开始就不要使用 Google Play 服务。

      【讨论】:

        猜你喜欢
        • 2015-01-11
        • 1970-01-01
        • 2018-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多