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 eu.ztsh.garmin.databinding.ActivityMainBinding
|
||||
import eu.ztsh.garmin.mapbox.NavigationObserver
|
||||
import eu.ztsh.garmin.util.PermissionsHelper
|
||||
import java.lang.ref.WeakReference
|
||||
|
||||
@SuppressLint("MissingPermission")
|
||||
class MainActivity : AppCompatActivity() {
|
||||
|
@ -29,6 +31,7 @@ class MainActivity : AppCompatActivity() {
|
|||
|
||||
private lateinit var binding: ActivityMainBinding
|
||||
private val navigationObserver = NavigationObserver()
|
||||
val permissionsHelper = PermissionsHelper(WeakReference(this))
|
||||
|
||||
init {
|
||||
lifecycle.addObserver(object : DefaultLifecycleObserver {
|
||||
|
@ -48,14 +51,16 @@ class MainActivity : AppCompatActivity() {
|
|||
super.onCreate(savedInstanceState)
|
||||
binding = ActivityMainBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
if (!MapboxNavigationApp.isSetup()) {
|
||||
MapboxNavigationApp.setup {
|
||||
NavigationOptions.Builder(applicationContext)
|
||||
// .accessToken(BuildConfig.MAPBOX_DOWNLOADS_TOKEN)
|
||||
.build()
|
||||
permissionsHelper.checkPermissions {
|
||||
if (!MapboxNavigationApp.isSetup()) {
|
||||
MapboxNavigationApp.setup {
|
||||
NavigationOptions.Builder(applicationContext)
|
||||
// .accessToken(BuildConfig.MAPBOX_DOWNLOADS_TOKEN)
|
||||
.build()
|
||||
}
|
||||
}
|
||||
MapboxNavigationApp.current()?.startTripSession()
|
||||
}
|
||||
MapboxNavigationApp.current()?.startTripSession()
|
||||
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