+ static final int MY_PERMISSION_REQUEST_FINE_POSITION = 1001;
+
+ public boolean have_location_permission = false;
+ public boolean asked_location_permission = false;
+
+ AltosMapOnline map_online;
+
+ void
+ tell_map_permission(AltosMapOnline map_online) {
+ this.map_online = map_online;
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String[] permissions,
+ int[] grantResults) {
+ switch (requestCode) {
+ case MY_PERMISSION_REQUEST_FINE_POSITION:
+ if (grantResults.length > 0 &&
+ grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ have_location_permission = true;
+ enable_location_updates();
+ if (map_online != null)
+ map_online.position_permission();
+ }
+ break;
+ }
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ AltosDebug.debug("+ ON RESUME +");
+
+ if (!asked_location_permission) {
+ asked_location_permission = true;
+ if (ActivityCompat.checkSelfPermission(this,
+ Manifest.permission.ACCESS_FINE_LOCATION)
+ == PackageManager.PERMISSION_GRANTED)
+ {
+ have_location_permission = true;
+ }
+ else
+ {
+ ActivityCompat.requestPermissions(this,
+ new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
+ MY_PERMISSION_REQUEST_FINE_POSITION);
+ }
+ }
+ if (have_location_permission)
+ enable_location_updates();
+ }
+