[解決済み] Googleマップのような位置情報ダイアログを表示するには?
2022-06-08 06:13:12
質問
Google Play Services の最新版 (7.0) を使用しており、そのガイドに記載されている手順に従って、以下のような位置情報ダイアログを有効化し、その中に "never" ボタンがあります。私のアプリは強制的に位置情報を必要とするので、ユーザーに "never" を表示したくありません。一度ユーザーが "never" をクリックすると、位置情報の取得や位置情報の要求を再度行うことが全くできなくなるからです。
Google Mapsでは、「はい」と「いいえ」ボタンしかなく、「決して」ボタンはありません。
私のアプリの画像
Googleマップの画像
どのように解決するのですか?
LocationSettingsRequest.Builder(ロケーションセッティングリクエスト)。
にはメソッド
setAlwaysShow(boolean show)
.
ドキュメントが現在何もしていないことを示す一方で
(を設定すると(2015-07-05更新:Googleのドキュメントが更新され、この文言が削除されました)。
builder.setAlwaysShow(true);
を設定すると、Google Mapsの動作が有効になります。
これが動作するようになったコードです。
if (googleApiClient == null) {
googleApiClient = new GoogleApiClient.Builder(getActivity())
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this).build();
googleApiClient.connect();
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(30 * 1000);
locationRequest.setFastestInterval(5 * 1000);
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
.addLocationRequest(locationRequest);
//**************************
builder.setAlwaysShow(true); //this is the key ingredient
//**************************
PendingResult<LocationSettingsResult> result =
LocationServices.SettingsApi.checkLocationSettings(googleApiClient, builder.build());
result.setResultCallback(new ResultCallback<LocationSettingsResult>() {
@Override
public void onResult(LocationSettingsResult result) {
final Status status = result.getStatus();
final LocationSettingsStates state = result.getLocationSettingsStates();
switch (status.getStatusCode()) {
case LocationSettingsStatusCodes.SUCCESS:
// All location settings are satisfied. The client can initialize location
// requests here.
break;
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
// Location settings are not satisfied. But could be fixed by showing the user
// a dialog.
try {
// Show the dialog by calling startResolutionForResult(),
// and check the result in onActivityResult().
status.startResolutionForResult(
getActivity(), 1000);
} catch (IntentSender.SendIntentException e) {
// Ignore the error.
}
break;
case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
// Location settings are not satisfied. However, we have no way to fix the
// settings so we won't show the dialog.
break;
}
}
});
}
Kotlinについてはこちらをご覧ください。 https://stackoverflow.com/a/61868985/12478830
関連
-
armeabi-v7a armeabi arm64-v8a パラメータの意味説明
-
AndroidStudio3.0 Error:Execution failed for task ':app:processDebugResources'.
-
エラーが発生しました。ArrayAdapter は、リソース ID が TextView である必要があります。
-
Android開発で「Attempt to invoke virtual method 'XXX()' on null object reference」というヌルポインター例外に遭遇する。
-
Android Get set image.setImageResource(R.drawable.xxx) リソース
-
アンドロイドの遅延実行のいくつかの方法
-
アンドロイドスタジオ学習入門
-
Android Studio http://schemas.android.com/apk/res/android 「URIが登録されていません」の解決方法について
-
Android studio 制約レイアウト ConstraintLayout
-
[解決済み] Genymotion VMにGoogle Play Servicesをインストールする方法(ドラッグ&ドロップ非対応)?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
android.os の NetworkOnMainThreadException。
-
gitlab 設定エラー。リモートリポジトリから読み込めなかったか、ホストキーの検証に失敗しました。
-
デフォルトのアクティビティが見つからない場合の対処法
-
GIF、Lottie、SVGA
-
Android Nで報告されたエラーを解決する: android.os.FileUriExposedException: file:///storage/emulated/0/
-
WeChatとQQは、他のアプリのオープンリストに自分のアプリを追加し、ファイルパスを取得することができます
-
view.getRootView()の本当の意味とテストについて
-
AndroidStudioのショートカット 検索/置換
-
[解決済み】androidアプリでインターネット接続を確認するためのブロードキャストレシーバー
-
[解決済み] 設定ページに移動せずに位置情報サービスをオンにする