我们正面临Google Place Picker的一个问题,即它没有在一部特定的手机上运行(运行Android 6.0的MI Note 4)并引发异常对话,“不幸的是,Google Play服务......”。
1)代码正在我们拥有的所有测试手机上工作,除了这款手机外,还有从Gingerbread到Nougat的20种不同型号。因此,权限和密钥似乎不是问题。 com.google.android.geo.API_KEY已正确放置在应用程序部分中。
2)这个问题特别适用于这款手机。 Google Play服务已安装在手机上,并且正在调用 GooglePlayServicesUtil.isGooglePlayServicesAvailable 按预期返回 ConnectionResult.SUCCESS ,我们会在启动地点选择器之前检查该服务。
3)此外,手机还有游戏商店,&谷歌地图运行良好,进一步确认游戏服务正在运作。
4)我们甚至尝试将google play API降级到10.0.1和9.2.0只是为了找到原因,但行为是一样的。
以下是代码,它是标准的地方选择器代码。
try {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
Intent intent = builder.build(this);
startActivityForResult(intent, PLACE_PICKER_REQUEST);
} catch (GooglePlayServicesRepairableException e) {
GooglePlayServicesUtil
.getErrorDialog(e.getConnectionStatusCode(), this, 0);
} catch (GooglePlayServicesNotAvailableException e) {
Toast.makeText(this, "Google Play Services is not available.", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(this, "Google Play Services exception.", Toast.LENGTH_LONG).show();
}
知道可能出现什么问题吗?
答案 0 :(得分:0)
由于Google服务,此问题正在发生。 Google服务需要更新。所以只需在打开应用程序或放置选择器之前进行检查。
if (googlePlayApiStatus == ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED)
如果返回true。显示一个对话框,用户可以更新Google服务并粘贴以下代码,以便用户访问Google Play商店以更新服务。
final String appPackageName = "com.google.android.gms";
try {
/*IT WILL OPEN IN GOOGLE PLAY STORE*/
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
}
catch (android.content.ActivityNotFoundException anfe) {
/*IF GOOGLE PLAY STORE APP NOT FOUND IN DEVICE IT WILL OPEN IN WEB BROWSER*/
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
}
那就是它!!