mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Added fine location permission check
This commit is contained in:
1 parent
58839c3714
commit
8d123441b1
5 files changed
+33
-19
No files matched your search
@@ -9,13 +9,13 @@ import androidx.fragment.app.activityViewModels
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.SharedViewModel
|
||||
import com.rtbishop.look4sat.data.SatEntry
|
||||
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
|
||||
import com.rtbishop.look4sat.ui.adapters.EntriesAdapter
|
||||
import com.rtbishop.look4sat.utility.RecyclerDivider
|
||||
import com.rtbishop.look4sat.utility.Utilities.snack
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
@@ -68,7 +68,8 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
||||
event.getContentIfNotHandled()?.let {
|
||||
if (it == 0) setLoading()
|
||||
else if (it == 1) {
|
||||
getString(R.string.entries_update_error).snack(requireView())
|
||||
val errorMsg = getString(R.string.entries_update_error)
|
||||
Snackbar.make(requireView(), errorMsg, Snackbar.LENGTH_SHORT).show()
|
||||
setError()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,21 +19,27 @@
|
||||
|
||||
package com.rtbishop.look4sat.ui.fragments
|
||||
|
||||
import android.Manifest
|
||||
import android.content.pm.PackageManager
|
||||
import android.location.LocationManager
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.utility.PrefsManager
|
||||
import com.rtbishop.look4sat.utility.Utilities.round
|
||||
import com.rtbishop.look4sat.utility.Utilities.snack
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
class PrefsFragment : PreferenceFragmentCompat() {
|
||||
|
||||
private val locPermReqCode = 1000
|
||||
private val locPermString = Manifest.permission.ACCESS_FINE_LOCATION
|
||||
|
||||
@Inject
|
||||
lateinit var locationManager: LocationManager
|
||||
|
||||
@@ -56,19 +62,30 @@ class PrefsFragment : PreferenceFragmentCompat() {
|
||||
}
|
||||
|
||||
private fun setPositionFromGPS() {
|
||||
try {
|
||||
val locPermResult = ContextCompat.checkSelfPermission(requireContext(), locPermString)
|
||||
if (locPermResult == PackageManager.PERMISSION_GRANTED) {
|
||||
val location = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER)
|
||||
if (location != null) {
|
||||
val latitude = location.latitude.round(4)
|
||||
val longitude = location.longitude.round(4)
|
||||
val altitude = location.altitude.round(1)
|
||||
prefsManager.setStationPosition(latitude, longitude, altitude)
|
||||
getString(R.string.pref_pos_gps_success).snack(requireView())
|
||||
} else {
|
||||
getString(R.string.pref_pos_gps_null).snack(requireView())
|
||||
}
|
||||
} catch (e: SecurityException) {
|
||||
getString(R.string.pref_pos_gps_error).snack(requireView())
|
||||
showSnack(getString(R.string.pref_pos_gps_success))
|
||||
} else showSnack(getString(R.string.pref_pos_gps_null))
|
||||
} else requestPermissions(arrayOf(locPermString), locPermReqCode)
|
||||
}
|
||||
|
||||
private fun showSnack(message: String) {
|
||||
Snackbar.make(requireView(), message, Snackbar.LENGTH_SHORT)
|
||||
.setAnchorView(R.id.nav_bottom)
|
||||
.show()
|
||||
}
|
||||
|
||||
override fun onRequestPermissionsResult(code: Int, perms: Array<out String>, result: IntArray) {
|
||||
if (code == locPermReqCode) {
|
||||
if (result.isNotEmpty() && result[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
setPositionFromGPS()
|
||||
} else showSnack(getString(R.string.pref_pos_gps_error))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -52,6 +52,7 @@ class SplashActivity : FragmentActivity() {
|
||||
|
||||
private fun startMainActivity() {
|
||||
startActivity(Intent(this, MainActivity::class.java))
|
||||
finish()
|
||||
}
|
||||
|
||||
private inner class SplashPagerAdapter(activity: FragmentActivity) :
|
||||
|
||||
@@ -17,10 +17,6 @@ object Utilities {
|
||||
return String.format(format, hours, minutes, seconds)
|
||||
}
|
||||
|
||||
fun String.snack(view: View) {
|
||||
Snackbar.make(view, this, Snackbar.LENGTH_SHORT).show()
|
||||
}
|
||||
|
||||
fun Double.round(decimals: Int): Double {
|
||||
var multiplier = 1.0
|
||||
repeat(decimals) { multiplier *= 10 }
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@color/themeLight"
|
||||
android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z" />
|
||||
</vector>
|
||||
Reference in new issue
Block a user