feat: Location permissions check
This commit is contained in:
parent
9a2b0dd187
commit
c923f8825d
2 changed files with 61 additions and 6 deletions
|
@ -21,6 +21,8 @@ import com.mapbox.navigation.base.options.NavigationOptions
|
||||||
import com.mapbox.navigation.core.lifecycle.MapboxNavigationApp
|
import com.mapbox.navigation.core.lifecycle.MapboxNavigationApp
|
||||||
import eu.ztsh.garmin.databinding.ActivityMainBinding
|
import eu.ztsh.garmin.databinding.ActivityMainBinding
|
||||||
import eu.ztsh.garmin.mapbox.NavigationObserver
|
import eu.ztsh.garmin.mapbox.NavigationObserver
|
||||||
|
import eu.ztsh.garmin.util.PermissionsHelper
|
||||||
|
import java.lang.ref.WeakReference
|
||||||
|
|
||||||
@SuppressLint("MissingPermission")
|
@SuppressLint("MissingPermission")
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
|
@ -29,6 +31,7 @@ class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
private lateinit var binding: ActivityMainBinding
|
private lateinit var binding: ActivityMainBinding
|
||||||
private val navigationObserver = NavigationObserver()
|
private val navigationObserver = NavigationObserver()
|
||||||
|
val permissionsHelper = PermissionsHelper(WeakReference(this))
|
||||||
|
|
||||||
init {
|
init {
|
||||||
lifecycle.addObserver(object : DefaultLifecycleObserver {
|
lifecycle.addObserver(object : DefaultLifecycleObserver {
|
||||||
|
@ -48,14 +51,16 @@ class MainActivity : AppCompatActivity() {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
binding = ActivityMainBinding.inflate(layoutInflater)
|
binding = ActivityMainBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
permissionsHelper.checkPermissions {
|
||||||
if (!MapboxNavigationApp.isSetup()) {
|
if (!MapboxNavigationApp.isSetup()) {
|
||||||
MapboxNavigationApp.setup {
|
MapboxNavigationApp.setup {
|
||||||
NavigationOptions.Builder(applicationContext)
|
NavigationOptions.Builder(applicationContext)
|
||||||
// .accessToken(BuildConfig.MAPBOX_DOWNLOADS_TOKEN)
|
// .accessToken(BuildConfig.MAPBOX_DOWNLOADS_TOKEN)
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MapboxNavigationApp.current()?.startTripSession()
|
MapboxNavigationApp.current()?.startTripSession()
|
||||||
|
}
|
||||||
bluetoothInit()
|
bluetoothInit()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
50
app/src/main/java/eu/ztsh/garmin/util/PermissionsHelper.kt
Normal file
50
app/src/main/java/eu/ztsh/garmin/util/PermissionsHelper.kt
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
package eu.ztsh.garmin.util
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
|
import android.widget.Toast
|
||||||
|
import com.mapbox.android.core.permissions.PermissionsListener
|
||||||
|
import com.mapbox.android.core.permissions.PermissionsManager
|
||||||
|
import java.lang.ref.WeakReference
|
||||||
|
|
||||||
|
class PermissionsHelper(val activityRef: WeakReference<Activity>) {
|
||||||
|
private lateinit var permissionsManager: PermissionsManager
|
||||||
|
|
||||||
|
fun checkPermissions(onMapReady: () -> Unit) {
|
||||||
|
activityRef.get()?.let { activity: Activity ->
|
||||||
|
if (PermissionsManager.areLocationPermissionsGranted(activity)) {
|
||||||
|
onMapReady()
|
||||||
|
} else {
|
||||||
|
permissionsManager = PermissionsManager(object : PermissionsListener {
|
||||||
|
|
||||||
|
override fun onExplanationNeeded(permissionsToExplain: List<String>) {
|
||||||
|
activityRef.get()?.let {
|
||||||
|
Toast.makeText(
|
||||||
|
it, "You need to accept location permissions.",
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPermissionResult(granted: Boolean) {
|
||||||
|
activityRef.get()?.let {
|
||||||
|
if (granted) {
|
||||||
|
onMapReady()
|
||||||
|
} else {
|
||||||
|
it.finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
permissionsManager.requestLocationPermissions(activity)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun onRequestPermissionsResult(
|
||||||
|
requestCode: Int,
|
||||||
|
permissions: Array<String>,
|
||||||
|
grantResults: IntArray
|
||||||
|
) {
|
||||||
|
permissionsManager.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue