我正在尝试了解如何在我的Android应用中使用Google Cloud消息,所以我发现这个公会是由Google编写的,但有些东西我不明白。
如果Google Play服务在设备上可用,则此方法会返回true,如果没有,则会打开安装/更新Play服务的选项:
private boolean checkPlayServices() {
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (resultCode != ConnectionResult.SUCCESS) {
if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
GooglePlayServicesUtil.getErrorDialog(resultCode, this,
PLAY_SERVICES_RESOLUTION_REQUEST).show();
} else {
Log.i(TAG, "This device is not supported.");
finish();
}
return false;
}
return true;
}
另外,他们覆盖了onResume()
方法:
protected void onResume() {
super.onResume();
checkPlayServices();
}
在主要活动的onCreate()
方法中,他们编写了以下代码:
if (checkPlayServices()) {
gcm = GoogleCloudMessaging.getInstance(this);
regid = getRegistrationId(context);
if (regid.isEmpty()) {
registerInBackground();
}
} else {
Log.i(TAG, "No valid Google Play Services APK found.");
}
假设需要更新Google Play服务,变量resultCode
的值将不同于ConnectionResult.SUCCESS
,因此会创建对话框,返回值将为false。但是,如果返回值为false,即使使用确实更新了Play服务,也不会进行注册过程。
答案 0 :(得分:0)
看起来即使它第一次返回false,OnResume()方法可能会再次触发checkPlayService(),这应该返回true,这将在用户更新Play服务后发生。
注册逻辑不会执行。由于这只是演示GCM的演示应用程序,因此他们没有添加任何内容来处理该场景。似乎假设用户可能已经存在Play服务。在那种情况下,用户必须离开应用程序并重新输入它。您可以对onResume()方法进行修改,以执行与onCreate()相同的逻辑。