From 5d6167442b2101e85d0330d189bbee3803ff8bcb Mon Sep 17 00:00:00 2001 From: Graham Date: Wed, 24 Jan 2024 13:13:26 -0500 Subject: [PATCH] Added permission for location access --- code/Android/app/src/main/AndroidManifest.xml | 8 +++- code/Android/app/src/main/assets/about.html | 2 +- .../com/skye/skyetracker/LocationTab.java | 48 +++++++++++-------- 3 files changed, 35 insertions(+), 23 deletions(-) diff --git a/code/Android/app/src/main/AndroidManifest.xml b/code/Android/app/src/main/AndroidManifest.xml index e04e95a..fdded13 100644 --- a/code/Android/app/src/main/AndroidManifest.xml +++ b/code/Android/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:versionCode="257" + android:versionName="2.5.7" > @@ -13,6 +13,10 @@ android:minSdkVersion="31"/> + + + + About SkyeTracker -

SkyeTracker (version 2.5.6)

+

SkyeTracker (version 2.5.7)

Buy Me A Coffee diff --git a/code/Android/app/src/main/java/com/skye/skyetracker/LocationTab.java b/code/Android/app/src/main/java/com/skye/skyetracker/LocationTab.java index a5b0071..1dfc1d6 100644 --- a/code/Android/app/src/main/java/com/skye/skyetracker/LocationTab.java +++ b/code/Android/app/src/main/java/com/skye/skyetracker/LocationTab.java @@ -2,6 +2,7 @@ import android.Manifest; import android.annotation.SuppressLint; +import android.app.Activity; import android.app.Fragment; import android.content.BroadcastReceiver; import android.content.Context; @@ -9,10 +10,13 @@ import android.content.IntentFilter; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.location.Criteria; import android.location.Location; import android.location.LocationManager; import android.os.Build; import android.os.Bundle; + +import androidx.core.app.ActivityCompat; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.core.content.PermissionChecker; import android.view.LayoutInflater; @@ -61,28 +65,32 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa btnUploadLocation = (Button) rootView.findViewById(R.id.btnUploadLocation); btnUploadLocation.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { - if (selfPermissionGranted(Manifest.permission.ACCESS_FINE_LOCATION) == false) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - requestPermissions(INITIAL_PERMS, INITIAL_REQUEST); + if (selfPermissionGranted(Manifest.permission.ACCESS_COARSE_LOCATION) == false) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + requestPermissions(INITIAL_PERMS, INITIAL_REQUEST); + } } - } - LocationManager lm = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); - if (selfPermissionGranted(Manifest.permission.ACCESS_FINE_LOCATION)) { - @SuppressLint("MissingPermission") Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); - - if (location == null){ - Toast.makeText(getActivity(),"Location Not found",Toast.LENGTH_LONG).show(); - }else { - lat.setText(String.format("%.6f", location.getLatitude())); - lon.setText(String.format("%.6f", location.getLongitude())); - longitude = location.getLongitude(); - latitude = location.getLatitude(); + if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions((Activity) context, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 101); + } + + LocationManager lm = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); + if (selfPermissionGranted(Manifest.permission.ACCESS_COARSE_LOCATION)) { + @SuppressLint("MissingPermission") Location location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); + + if (location == null) { + Toast.makeText(getActivity(), "Location Not found", Toast.LENGTH_LONG).show(); + } else { + lat.setText(String.format("%.6f", location.getLatitude())); + lon.setText(String.format("%.6f", location.getLongitude())); + longitude = location.getLongitude(); + latitude = location.getLatitude(); + Gson gson = new Gson(); + ConfigLocation configLocation = new ConfigLocation(latitude, longitude); + String json = "SetC|" + gson.toJson(configLocation); + MainApplication.SendCommand(json); + } } - } - Gson gson = new Gson(); - ConfigLocation configLocation = new ConfigLocation(latitude, longitude); - String json = "SetC|" + gson.toJson(configLocation); - MainApplication.SendCommand(json); } });