質問: 以下のページを参考にして、Unity(C#)にて、位置情報の取得しています。 https://qiita.com/lycoris102/items/35e338b32105879e0ab9 android用にビルドして、問題なく、緯度・経度は取得できるのですが、 「現在地の権限」が自動的に付与されず、 明示的にAndroidの設定より、「現在地の権限(※1)」を設定している現状です。 どのようにすれば、自動的に「現在地の権限(※1)」が設定できるでしょうか。 (GPSが必要になったときに、位置情報の許可を与えるかの確認ダイアログが出てほしい) また、Assets\Plugins\Android配下のAndroidManifest.xmlに、 以下のパーミッションを設定済みですが、うまくいきません。 ■Unityバージョン Unity 2018.3.9f1 (64-bit) (※1) Androidの設定→アプリと通知→アプリ→対象アプリ選択 後に表示される アプリ情報の中で、権限を選択後に表示される 「アプリの権限」画面の「現在地」の権限になります。 この権限があれば、GPSから緯度・経度が取得できます。
回答: 許可を与えるかの確認ダイアログは、自分で呼ぶ必要があると思います。 実行時のパーミッション リクエスト | Android Developers 「checkSelfPermission」とかで検索してみると色々出てくると思います。 多分こんな感じで出来ると思います。 ``` static bool CheckPermission (string permission) { using (var unityPlayer = new AndroidJavaClass ("com.unity3d.player.UnityPlayer")) using (var activity = unityPlayer.GetStatic ("currentActivity")) using (var compat = new AndroidJavaClass ("android.support.v4.app.ActivityCompat")) { var check = compat.CallStatic ("checkSelfPermission", activity, permission); if (check == 0) return true; int REQUEST_CODE = 1; compat.CallStatic ("requestPermissions", activity, new String[] { permission }, REQUEST_CODE); //再チェック check = compat.CallStatic ("checkSelfPermission", activity, permission); if (check == 0) return true; // "設定からパーミッションを許可してください。機能が使用できません。"; } return false; } ``` `CheckPermission ("android.permission.ACCESS_FINE_LOCATION");`や、`CheckPermission ("android.permission.ACCESS_COARSE_LOCATION");`という感じで呼びます。 android-support-v4.jar か .aar が必要です。