如何获取新的GoogleApiAvailability.getErrorDialog()的请求代码?

时间:2017-12-19 17:08:00

标签: android google-api firebase-cloud-messaging

我正在关注this guide以检查GoogleApiAvailability,它要求我致电getErrorDialog(int responseCode)

  

但是,结果代码是SERVICE_MISSING,   SERVICE_VERSION_UPDATE_REQUIRED,或者SERVICE_DISABLED,然后是用户   需要安装更新。在这种情况下,调用getErrorDialog()   方法并将结果错误代码传递给它。

该指南适用于getErrorDialog(int responseCode) 但this page(getErrorDialog上的超链接)表示该方法已弃用

  

此方法已弃用。使用getErrorDialog(Activity,int,int)   代替。

根据文档,第一个int是请求代码,第二个int是响应代码。我收到了isGoogleApiAvailable(context)的回复代码,但我不知道请求代码是什么以及如何获取代码。

这是我的代码:

  // Ensure Google Play services framework is installed
        int gAAResult = GoogleApiAvailability
                .getInstance()
                .isGooglePlayServicesAvailable(this);
        if(gAAResult == ConnectionResult.SUCCESS){
            Log.d(TAG, "Play services available");
        } else {
            GoogleApiAvailability
                    .getInstance()
                    .getErrorDialog(this, ? ,gAAResult);
        }

如果要用实际请求代码替换问号 作为一个临时的工作我已经通过0到它。我没有没有播放服务的设备。在模拟器上,应用程序显示一个对话框(没有我的代码)来更新播放服务。但FCM文档建议对此检查进行编码

1 个答案:

答案 0 :(得分:1)

第一个int是connectionResult,由isGooglePlayServicesAvailable(Context context)方法返回。第二个是requestCode错误对话框。

显示错误对话框后,您将在活动的方法onActivityResult(int requestCode, int result, Intent data)中收到回调,其中包含结果并传递了请求代码。由于您可以从一个执行结果形式开始执行多个活动,getErrorDialog(...)方法要求您将请求代码作为操作的唯一标识符传递,以帮助您处理结果。

您实际上需要实现此功能,因为通用的Play服务错误对话框可能会帮助用户在他/她的手机上更新Play服务,因此您会收到通知,问题实际已得到解决。如果你没那么幸运,也一样。