Android Place Picker (PlacePicker) больше не имеет значок поиска после обновления до Google Play Services 9.0.83
Совсем недавно некоторые из моих пользователей начали сообщать, что значок поиска исчез из виджета пользовательского интерфейса PlacePicker. Мне удалось изолировать проблему до обновления до Google Play Services 9.0.83. Кто-нибудь нашел обходной путь, чтобы снова вернуть значок поиска?
Обновление: я также заметил, что метод setLatLngBounds() класса PlacePicker.IntentBuilder больше не работает должным образом после обновления до 9.0.83. Она центрирует карту на 0 лат, 0 в океане у побережья Африки. Пока я не вызываю setLatLngBounds(), PlacePicker будет сосредоточен на моем текущем местоположении.
Обновление: у меня есть идея, но мне нужна помощь всех. Основываясь на информации с этого веб-сайта apkmirror.com, существуют подрывные версии 9.0.83, основанные на CPU и DPI экрана. В диспетчере приложений выберите Службы Google Play, и подкаталог должен быть в скобках рядом с версией, мой - 440-121911109, пожалуйста, оставьте свой комментарий в комментариях, если у вас возникла та же проблема. Может быть, мы сможем найти общий знаменатель.
Перед обновлением до Google Play Services 9.0.83
После обновления до Google Play Services 9.0.83
static final int PPR = 41;
private GoogleApiClient googleApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.place_picker_activity);
googleApiClient = new GoogleApiClient
.Builder(this)
.addApi(Places.GEO_DATA_API)
.addApi(Places.PLACE_DETECTION_API)
.enableAutoManage(this, this)
.build();
Button btnLaunch = (Button) findViewById(R.id.buttonLaunch);
btnLaunch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (googleApiClient.isConnected()) {
try {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
startActivityForResult(builder.build(PlacePickerActivity.this), PPR);
} catch (GooglePlayServicesRepairableException e) {
e.printStackTrace();
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
} else {
Toast.makeText(getApplicationContext(),"Google api not connected yet", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
protected void onStart() {
super.onStart();
googleApiClient.connect();
}
@Override
protected void onStop() {
super.onStop();
if (googleApiClient.isConnected()) {
googleApiClient.disconnect();
}
}
@Override
public void onConnected(Bundle connectionHint) { }
@Override
public void onConnectionFailed(ConnectionResult result) {
Toast.makeText(getApplicationContext(), "Connection failed: " + result.getErrorCode(), Toast.LENGTH_LONG).show();
}
@Override
public void onConnectionSuspended(int cause) {
Toast.makeText(getApplicationContext(), "Connection suspended",Toast.LENGTH_LONG).show();
googleApiClient.connect();
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PPR) {
if (resultCode == RESULT_OK) {
Place place = PlacePicker.getPlace(this, data);
Toast.makeText(this, ""+place.getName(), Toast.LENGTH_LONG).show();
}
}
}
1 ответ
Похоже, это может быть связано с тем, что компонент PlacePicker не синхронизирован с конфигурацией устройства. Одна вещь, которую вы можете попробовать, - это принудительно зарегистрировать конфигурацию на соответствующих устройствах, набрав *#*#2432546#*#* в приложении для набора номера Android.