> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zixflow.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Location Tracking

> Location Tracking — Zixflow Android SDK integration guide.

Track user location to enable location-based messaging.

### Add Permissions

Add location permissions to `AndroidManifest.xml`:

```xml theme={null}
<manifest>
    <!-- For foreground location -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <!-- For background location (optional, Android 10+) -->
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>
```

### Request Location Permission

```kotlin theme={null}
import android.Manifest
import androidx.activity.result.contract.ActivityResultContracts

class MainActivity : AppCompatActivity() {

    private val requestLocationPermission = registerForActivityResult(
        ActivityResultContracts.RequestMultiplePermissions()
    ) { permissions ->
        when {
            permissions[Manifest.permission.ACCESS_FINE_LOCATION] == true -> {
                // Precise location granted
            }
            permissions[Manifest.permission.ACCESS_COARSE_LOCATION] == true -> {
                // Approximate location granted
            }
            else -> {
                // Location permission denied
            }
        }
    }

    private fun requestLocationPermission() {
        requestLocationPermission.launch(arrayOf(
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.ACCESS_COARSE_LOCATION
        ))
    }
}
```

### Initialize Location Module

```kotlin theme={null}
import com.zixflow.location.ModuleLocation

val builder = ZixflowConfigBuilder(this, "YOUR_API_KEY")
    .addModule(ModuleLocation())
    .build()

Zixflow.initialize(builder)
```

### Manual Location Update

```kotlin theme={null}
import android.location.Location

// Set last known location
val location: Location = ... // Get from LocationManager or FusedLocationProvider
Zixflow.instance().setLastKnownLocation(location)
```

***
