Android Code Snippet Google Location Button

Has anyone implemented the Google Location button as described here:

It would be useful to have some pointers as to how to it.

Thanks

Derek Johnson
  • To better protect user privacy, we're updating our Location Permissions policy. We're introducing the location button as the recommended minimum scope for precise location in line with our user data and sensitive permissions requirements.

 

Erel

B4X founder
Staff member
Licensed User
Longtime User
1. Install: androidx.core.locationbutton:locationbutton with B4A Sdk Manager.

2.
Add to main module:
B4X:
#AdditionalJar: androidx.core.locationbutton:locationbutton
#AdditionalJar: androidx.appcompat:appcompat
#AdditionalJar: androidx.emoji2:emoji2-views-helper
#AdditionalJar: androidx.emoji2:emoji2

3. Manifest editor:
B4X:
AddPermission(android.permission.USE_LOCATION_BUTTON)
AddPermission(android.permission.ACCESS_FINE_LOCATION)
AddPermission(android.permission.ACCESS_COARSE_LOCATION)

4. Code:
B4X:
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
 
Last edited:
Top