ANDROID PLACE_PICKER(builder.build(上下文)
作者:互联网
基本上,我正在尝试为Android实现PLACE_PICKER,并且在这里遇到了这个令人困惑的错误:
int PLACE_PICKER_REQUEST = 1;
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
Context context = getApplicationContext();
startActivityForResult(builder.build(context), PLACE_PICKER_REQUEST);
错误即将出现在第4行:“(builder.build(context),”,我不知道为什么,我将其归类为错误:
未处理的异常:com.google.android.gms.common.GooglePlayServicesRepairableException,com.google.android.gms.common.GooglePlayServicesNotAvailableException.
多年来一直在解决这个问题…有什么帮助吗?
解决方法:
看来主要问题是您使用的是旧版Google Play服务.因此,为了使其适合您,您需要更新设备或仿真器上安装的Google Play服务的版本.
这也表明您没有任何代码可以检查设备上是否存在所需的版本,因此您绝对应该添加此代码,因为该领域的用户可能会遇到相同的问题.
如果设备上当前的版本比您的应用所需的版本旧,该框架提供了一种向用户添加提示以更新Google Play服务的简便方法.
这是我刚开始工作的一个简单示例.
首先,创建一个成员变量状态:
int status;
然后,在您的Activity的onCreate()中,检查Google Play服务是否可用.如果不是,则显示将提示用户升级的对话框:
status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (status != ConnectionResult.SUCCESS) {
if (GooglePlayServicesUtil.isUserRecoverableError(status)) {
GooglePlayServicesUtil.getErrorDialog(status, this,
100).show();
}
}
然后,当您想要显示PlacePicker时,请确保状态指示Google Play服务可用.如果不满足此条件,您可能还希望向用户提供一些指示(在此处添加其他内容)(另请注意额外的try / catch).
if (status == ConnectionResult.SUCCESS) {
int PLACE_PICKER_REQUEST = 199;
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
Context context = this;
try {
startActivityForResult(builder.build(context), PLACE_PICKER_REQUEST);
} catch (GooglePlayServicesRepairableException e) {
e.printStackTrace();
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
}
您还可以添加的一件事是,重新检查onActivityResult()中的状态,以查看用户是否已更新Google Play服务.
这也是从中获得PlacePicker对话框的结果的位置:
@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 100){
status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
}
if (requestCode == 199){
//process Intent......
Place place = PlacePicker.getPlace(data, this);
String toastMsg = String.format("Place: %s", place.getName());
Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();
}
}
结果:
标签:android,google-places-api,google-maps 来源: https://codeday.me/bug/20191009/1881881.html