如何确定Android上Google Play服务的实际构建数量?

如何确定Android上Google Play服务的实际构建数量?,android,android-studio,google-play-services,Android,Android Studio,Google Play Services,注意:我不想在模拟器中更新google play服务。我不在乎它是否过时。我提到它只是为了显示logcat正在报告实际的版本号,我希望在应用程序中访问它 类似,但不同于 如果设备上没有安装最新的Google Play服务,我正在使用Android Studio 1.2.2开发的一个应用程序将遇到问题,但GoogleAppAvailability没有报告问题,因此指示用户更新的代码从未被调用。如果我手动告诉用户使用手动链接更新play store中的play服务,则会有可用的更新,并且在用户安装后

注意:我不想在模拟器中更新google play服务。我不在乎它是否过时。我提到它只是为了显示logcat正在报告实际的版本号,我希望在应用程序中访问它

类似,但不同于

如果设备上没有安装最新的Google Play服务,我正在使用Android Studio 1.2.2开发的一个应用程序将遇到问题,但GoogleAppAvailability没有报告问题,因此指示用户更新的代码从未被调用。如果我手动告诉用户使用手动链接更新play store中的play服务,则会有可用的更新,并且在用户安装后,应用程序会正常运行

但是,我无法找到一种方法来确定用户是否需要通过应用程序代码或gradle构建文件进行更新

  • 在gradle文件中,我指定了:compile'com.google.android.gms:play services:7.5.0',这是据我所知的最新版本。Android Studio没有表示我应该将这一行更新为新版本

  • SDK管理器报告我安装的播放服务是“rev 25”,没有可用的更新

  • 当我在模拟器中测试时,代码工作正常,在logcat中我看到消息:“W/GooglePlayServicesUtil:GooglePlayServices过期。需要7571000,但找到6774470”。这对于模拟器来说是正常的,因为他们还没有发布新的图像,但它提供了一个有趣的线索


  • 有没有办法以编程方式在上面第3项中报告此版本号?如果是这样的话,我可以与之进行比较,而不是使用GooglePlayServicesAvailable的GooglePiAvailability方法——我已经在使用该方法,但在需要更新的设备上报告成功。

    如果有更新,此功能将告诉用户更新
    GooglePlasServices
    。如果此函数返回
    true

    private boolean checkPlayServices()
    {
        int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    
        if (resultCode != ConnectionResult.SUCCESS)
        {
            if (GooglePlayServicesUtil.isUserRecoverableError(resultCode))
                GooglePlayServicesUtil.getErrorDialog(resultCode, this, 9000).show();
    
            else
            {
                Log.i(TAG, "This device is not supported.");
                finish();
            }
    
            return false;
        }
    
        return true;
    }
    

    如果更新可用,此功能将告诉用户更新
    GooglePlasServices
    。如果此函数返回
    true

    private boolean checkPlayServices()
    {
        int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    
        if (resultCode != ConnectionResult.SUCCESS)
        {
            if (GooglePlayServicesUtil.isUserRecoverableError(resultCode))
                GooglePlayServicesUtil.getErrorDialog(resultCode, this, 9000).show();
    
            else
            {
                Log.i(TAG, "This device is not supported.");
                finish();
            }
    
            return false;
        }
    
        return true;
    }
    

    我设法做了一些挖掘,回答了我自己的问题。下面的代码将实现我(可能还有其他人)想要的功能

    PackageInfo pi=getPackageManager().getPackageInfo(“com.google.android.gms”,0);
    if(pi.versionCode<您想要的版本)
    {
    //指示用户更新
    }
    
    我所做的是将其包装到所需的异常处理程序中,并在API检查报告成功时运行它。如果版本太低,我调用getErrorDialog,就像API检查失败一样,需要ConnectionResult.SERVICE\u version\u UPDATE\u而不是返回的成功值


    执行此操作可能需要更新最小SDK目标。例如,我的手机(5.0.1)和平板电脑(4.2.2)都报告API检查成功,并且前往play store都不会显示任何一个的更新;然而,桌面上安装的版本是7895032,而电话上安装的版本是7895438。

    我已经设法做了一些挖掘,并回答了我自己的问题。下面的代码将实现我(可能还有其他人)想要的功能

    PackageInfo pi=getPackageManager().getPackageInfo(“com.google.android.gms”,0);
    if(pi.versionCode<您想要的版本)
    {
    //指示用户更新
    }
    
    我所做的是将其包装到所需的异常处理程序中,并在API检查报告成功时运行它。如果版本太低,我调用getErrorDialog,就像API检查失败一样,需要ConnectionResult.SERVICE\u version\u UPDATE\u而不是返回的成功值


    执行此操作可能需要更新最小SDK目标。例如,我的手机(5.0.1)和平板电脑(4.2.2)都报告API检查成功,并且前往play store都不会显示任何一个的更新;但是,桌面上安装的版本是7895032,而手机上安装的版本是7895438。

    模拟器没有安装google play服务或正确的版本。可能的副本不是副本,与更新模拟器无关。请阅读整个问题。模拟器没有安装google play服务或正确的版本。可能的副本不是副本,与更新模拟器无关。请阅读整个问题。请阅读问题。我已经做到了。如果应用商店中有更新的版本修复了一个bug,它会报告成功。这有用吗?我不认为。我相信这是一个静态版本号,不会因设备而改变,但我可能错了。在任何情况下,我都找到了从软件包管理器获取所需版本号的方法,请参阅下面的答案。请阅读问题。我已经做到了。如果应用商店中有更新的版本修复了一个bug,它会报告成功。这有用吗?我不认为。我相信这是一个静态版本号,不会因设备而改变,但我可能错了。在任何情况下,我都找到了从软件包管理器获取所需版本号的方法,请参见下面的答案。