我加入一个MapFragment到我的应用程序,并有下面的代码,改编自地图教程:GooglePlayServicesUtil错误对话框,按钮不执行任何操作
private boolean servicesConnected() {
// Check that Google Play services is available
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
// If Google Play services is available
if (ConnectionResult.SUCCESS == resultCode) {
// In debug mode, log the status
Log.d("Location Updates", "Google Play services is available.");
// Continue
return true;
// Google Play services was not available for some reason
} else {
GooglePlayServicesUtil.getErrorDialog(resultCode, this, 7).show();
return false;
}
}
我测试上恢复出厂设置的Galaxy Tab 10.1与过时谷歌播放服务。因此,当我尝试打开MapFragment时,我打电话servicesConnected()
进行检查,并且如预期的那样,我收到一个对话框,告诉我需要Google Play服务。在对话框的底部有一个按钮“Get Google Play服务”,但是当我点击它时,它什么也不做。我logcat的输出如下:
07-23 15:30:43.580: W/GooglePlayServicesUtil(2515): Google Play services is missing.
07-23 15:30:48.510: E/SettingsRedirect(2515): Can't redirect to app settings for Google Play services
我有以下onConnectionFailed
方法(基本上是从Android开发者网站复制粘贴):
public void onConnectionFailed(ConnectionResult connectionResult) {
/*
* Google Play services can resolve some errors it detects.
* If the error has a resolution, try sending an Intent to
* start a Google Play services activity that can resolve
* error.
*/
if (connectionResult.hasResolution()) {
try {
// Start an Activity that tries to resolve the error
connectionResult.startResolutionForResult(
this,
CONNECTION_FAILURE_RESOLUTION_REQUEST);
/*
* Thrown if Google Play services canceled the original
* PendingIntent
*/
} catch (IntentSender.SendIntentException e) {
// Log the error
e.printStackTrace();
}
} else {
/*
* If no resolution is available, display a dialog to the
* user with the error.
*/
GooglePlayServicesUtil.getErrorDialog(connectionResult.getErrorCode(), this, 7).show();
}
}
为什么不是这方面的工作?任何帮助都会很棒。
Here是我正在从事的Android开发页面,而here也是与之相关的SO帖子。
编辑
,我意识到我没有一个谷歌帐户设置在设备上,所以我设置一个,但它并没有区别。
我试过这个,它曾经工作过一次,但很混乱。所以我改变了一些其他代码,卸载谷歌播放服务,并再次尝试,它不起作用。我解开了所有的更改,但仍然无效... –
现在它再次工作。不改变一个东西 –
代码“不应该”运行到该行,但以防万一:在if(dialog == null)语句内调用dialog.show() – Ripityom