場所ピッカーを表示して、ユーザーが自分の場所を選択できるようにしたい。ただし、プレースピッカーの子アクティビティは、起動後に自動的に閉じます。 APIキーとその他の権限を複数回確認しましたが、すべて問題ありません。ここにすべてのコードがあります。助けてください!
task_location.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
PlacePicker.IntentBuilder intentBuilder = new PlacePicker.IntentBuilder();
Intent intent = intentBuilder.build(NewTaskActivity.this);
// Start the Intent by requesting a result, identified by a request code.
startActivityForResult(intent, 123);
} catch (GooglePlayServicesRepairableException e) {
GooglePlayServicesUtil
.getErrorDialog(e.getConnectionStatusCode(), NewTaskActivity.this, 0);
} catch (GooglePlayServicesNotAvailableException e) {
Toast.makeText(NewTaskActivity.this, "Google Play Services is not available.",
Toast.LENGTH_LONG)
.show();
}
}
});
そして、これがメニフェストファイルです。
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.WAKE_LOCK" />
<uses-feature
Android:glEsVersion="0x00020000"
Android:required="true" />
<application
Android:allowBackup="true"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme"
tools:replace="Android:icon">
<meta-data Android:name="com.google.Android.gms.version"
Android:value="@integer/google_play_services_version" />
<meta-data
Android:name="com.google.Android.geo.API_KEY"
Android:value="AIzaSyAjM9hWUXm8vlABqFbM_fJfQgIFli8HP1E"/>
多くのデバッグの後、私はそれを自分で解決しました。問題はパッケージ名でした。AndroidStudioはプロジェクトの作成時にパッケージ名を自分で管理していました。マニフェストでパッケージ名を変更すると、完全に問題なく動作しました。しかし、Google開発者コンソールからプレイスピッカー用のAPIキーを取得すると、プレイスピッカーが1文字のエラーもなく自動的に閉じます。
次に、-> Module Settings-> Flavorsに移動してパッケージ名を変更し、アプリケーションIDを変更して問題を修正します。
アプリのlogcatで「PLACES_API_ACCESS_NOT_CONFIGURED」メッセージを確認してください。この場合、このプロジェクトのGoogle Developer ConsoleでAndroidに対してGoogle Places APIを有効にすることで問題が解決するはずです。
Google APIコンソールで使用しているAPIキーに対してGoogle Places APIが有効になっていることを確認してください。私は、マップに使用するのと同じAPIキーを使用しています。 Places APIにも同じキーを有効にしただけです。それで問題は解決しました。次のリンクを使用して、Googleコンソールにアクセスします。 https://console.developers.google.com/flows/enableapi?apiid=placesandroid&reusekey=true
APIキーを変更するだけで問題を解決
ここ から新しいキーを作成できます
Places APIとPlaces SDKの両方を有効にする
Places APIを有効にする代わりに、Places SDK for Androidを有効にします。私のために働いた。幸運を :)