спасибо за просмотр. Как следует из названия, я столкнулся с довольно «странной» проблемой в моем текущем Kotlin проекте. В моем Приложении пользователь может нажать на кнопку (или текстовый ввод, работающий как кнопка), а затем появляется новое намерение, где пользователь может ввести местоположение.
Небольшой фрагмент здесь:
R.id.et_location -> {
try{
// This is the list of fields that need to be passed
val fields = listOf(Place.Field.ID, Place.Field.NAME, Place.Field.LAT_LNG, Place.Field.ADDRESS)
// Start the autocomplete intent with a unique request code.
val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields).build(this@AddHappyPlaceActivity)
startActivityForResult(intent, PLACE_AUTOCOMPLETE_REQUEST_CODE)
}catch (e: Exception) {
e.printStackTrace()
Toast.makeText(this, "Couldnt load it", Toast.LENGTH_SHORT).show()}
Все это работает довольно хорошо, поэтому окно появляется, но когда я начинаю набирать что-то вроде "Dub" (для Дубая, например), он показывает несколько записей, но если я наберу 1-2 символа больше, он внезапно говорит: «Не удается загрузить результаты поиска». Иногда поиск не работает вообще. Я погуглил эту проблему, и люди предположили, что может быть что-то не так с API-ключом, но если что-то не так с ключом, он не будет работать в первую очередь и просто закроет Intent (я попробовал).
Я попробовал несколько вещей с ключом API. Для начала у меня были проблемы с первым ключом, который я создал, что он не работал вообще. Второй ключ, который я сгенерировал, работал частично (моя текущая ситуация). Первый ключ ограничен моим пакетом / sha1. ![My API Keys](https://i.stack.imgur.com/uad9H.png)
Второй ключ, как вы видите, не имеет никаких ограничений, но работает лучше, чем первый. Теперь я не уверен, что это мой API-ключ, который вызывает эту проблему, или мой код. Ниже я поделюсь соответствующим кодом.
AndroidManifest. xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="eu.sampa.happyPlaces">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Several permissions -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name=".activities.HappyPlaceDetailActivity"
android:label="HAPPY PLACE DETAILS"
android:screenOrientation="portrait"
android:theme="@style/CustomNoActionBarTheme" />
<activity
android:name=".activities.AddHappyPlaceActivity"
android:label="ADD HAPPY PLACE"
android:screenOrientation="portrait"
android:theme="@style/CustomNoActionBarTheme" />
<activity android:name=".activities.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
google_maps_api. xml (я удалил свой ключ SHA1 и ключ API перед публикацией здесь)
<resources>
<!--
TODO: Before you run your application, you need a Google Maps API key.
To get one, follow this link, follow the directions and press "Create" at the end:
https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=60:BF:DE:FE:3C:6F:DA:3B:56:09:E7:B7:BB:5F:FC:F8:AE:00:DC:0D%3Beu.sampa.happyPlaces.activities
You can also add your credentials to an existing key, using these values:
Package name:
eu.sampa.happyPlaces.activities
SHA-1 certificate fingerprint:
MY SHA1 KEY
Alternatively, follow the directions here:
https://developers.google.com/maps/documentation/android/start#get-key
Once you have your key (it starts with "AIza"), replace the "google_maps_key"
string in this file.
-->
<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">MY API KEY</string>
</resources>
И вот, наконец, моя активность, где обрабатываются все необходимые вещи (извините за длину ... но я прокомментировал все функции, касающиеся этой проблемы, с комментарием "/ / Для Places API ", просто используйте функцию поиска при необходимости)
AddHappyPlaceActivity.kt