ANDROID PLACE_PICKER(builder.build(上下文)
ANDROID PLACE_PICKER (builder.build(context)
基本上我正在尝试为 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 如果设备上当前的版本比您的应用所需的版本旧,则播放服务。
这是我刚开始工作的一个简单示例。
首先创建一个成员变量status
:
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 时,请确保 status
表示 Google Play 服务可用。如果不满足此条件,您可能还想向用户提供一些指示(在此处添加 else
)(另请注意额外的 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();
}
}
结果:
对于片段
try {
int PLACE_PICKER_REQUEST = 1;
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
startActivityForResult(builder.build(getActivity()), PLACE_PICKER_REQUEST);
}catch (GooglePlayServicesNotAvailableException | GooglePlayServicesRepairableException ex){
ex.printStackTrace();
}
基本上我正在尝试为 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 如果设备上当前的版本比您的应用所需的版本旧,则播放服务。
这是我刚开始工作的一个简单示例。
首先创建一个成员变量status
:
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 时,请确保 status
表示 Google Play 服务可用。如果不满足此条件,您可能还想向用户提供一些指示(在此处添加 else
)(另请注意额外的 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();
}
}
结果:
对于片段
try {
int PLACE_PICKER_REQUEST = 1;
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
startActivityForResult(builder.build(getActivity()), PLACE_PICKER_REQUEST);
}catch (GooglePlayServicesNotAvailableException | GooglePlayServicesRepairableException ex){
ex.printStackTrace();
}