Private Sub B4XPage_Created (Root1 As B4XView)
Root = Root1
Root.LoadLayout("MainPage")
Dim btn As B4XView = CreateLocationButton
Root.AddView(btn, 100dip, 20dip, 250dip, 100dip)
End Sub
Private Sub CreateLocationButton As B4XView
Dim ctxt As JavaObject
ctxt.InitializeContext
Dim style As JavaObject
style = style.InitializeStatic("androidx.appcompat.R.style").GetField("Theme_AppCompat_Light")
Dim ContextThemeWrapper As JavaObject
ContextThemeWrapper.InitializeNewInstance("android.view.ContextThemeWrapper", Array(ctxt, style))
Dim btn As JavaObject
btn.InitializeNewInstance("androidx.core.locationbutton.LocationButton", Array(ContextThemeWrapper))
Dim listener As Object = btn.CreateEventFromUI("androidx.core.locationbutton.OnPermissionResultListener", "LocationButtonPermission", Null)
btn.RunMethod("setOnPermissionResultListener", Array(listener))
Dim ViewClass As JavaObject
ViewClass.InitializeStatic("android.view.View")
btn.RunMethod("setId", Array(ViewClass.RunMethod("generateViewId", Null)))
Dim jo As JavaObject = Me
Dim listener As Object = jo.CreateEventFromUI("androidx.core.locationbutton.OnRequestPermissionsListener", "LocationPermissionRequest", Null)
btn.RunMethod("setOnRequestPermissionsListener", Array(listener))
Return btn
End Sub
'Will only be called on Android 16- devices.
Private Sub LocationPermissionRequest_Event (MethodName As String, Args() As Object)
rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
LocationButtonPermission_Event("onPermissionResult", Array(Result))
End Sub
Private Sub LocationButtonPermission_Event (MethodName As String, Args() As Object) As Object
If MethodName = "onPermissionResult" Then
Dim permission As Boolean = Args(0)
If permission Then
Log("permission granted")
Else
Log("no permission!")
End If
End If
Return Null
End Sub