package com.example.
phone_tracker
import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.location.Location
import android.os.Bundle
import android.provider.Settings
import android.util.Log
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import com.google.android.gms.location.*
class MainActivity : AppCompatActivity() {
  private lateinit var fusedLocationClient: FusedLocationProviderClient
  private lateinit var locationText: TextView
  private val LOCATION_PERMISSION_REQUEST_CODE = 1001
  private val TAG = "PhoneTracker"
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    locationText = findViewById(R.id.locationText)
    val getLocationBtn = findViewById<Button>(R.id.getLocationBtn)
    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
    getLocationBtn.setOnClickListener {
         checkLocationPermission()
private fun checkLocationPermission() {
    if (ActivityCompat.checkSelfPermission(
           this,
           Manifest.permission.ACCESS_FINE_LOCATION
         ) != PackageManager.PERMISSION_GRANTED
    ){
         // Request permissions
         ActivityCompat.requestPermissions(
           this,
           arrayOf(
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.ACCESS_COARSE_LOCATION
           ),
            LOCATION_PERMISSION_REQUEST_CODE
    } else {
        // Permissions granted
        checkLocationSettings()
private fun checkLocationSettings() {
    val locationRequest = LocationRequest.create()
        .setPriority(Priority.PRIORITY_HIGH_ACCURACY)
    val builder = LocationSettingsRequest.Builder()
        .addLocationRequest(locationRequest)
        .setAlwaysShow(true)
    val client = LocationServices.getSettingsClient(this)
    val task = client.checkLocationSettings(builder.build())
    task.addOnSuccessListener {
        getCurrentLocation()
    task.addOnFailureListener {
        Toast.makeText(this, "Please turn on location services", Toast.LENGTH_LONG).show()
         val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
         startActivity(intent)
private fun getCurrentLocation() {
    if (ActivityCompat.checkSelfPermission(
           this,
           Manifest.permission.ACCESS_FINE_LOCATION
         ) != PackageManager.PERMISSION_GRANTED
    ){
         Toast.makeText(this, "Location permission not granted", Toast.LENGTH_SHORT).show()
         return
    fusedLocationClient.getCurrentLocation(Priority.PRIORITY_HIGH_ACCURACY, null)
         .addOnSuccessListener { location: Location? ->
           if (location != null) {
               val result = "Latitude: ${location.latitude}\nLongitude: ${location.longitude}"
               locationText.text = result
               Log.d(TAG, result)
           } else {
               locationText.text = "Location is null"
               Log.e(TAG, "Location is null")
           }
              }.addOnFailureListener {
                  locationText.text = "Failed to get location: ${it.message}"
                  Log.e(TAG, "Error: ${it.message}")
    override fun onRequestPermissionsResult(
         requestCode: Int,
         permissions: Array<out String>,
         grantResults: IntArray
    ){
         super.onRequestPermissionsResult(requestCode, permissions, grantResults)
         if (requestCode == LOCATION_PERMISSION_REQUEST_CODE &&
              grantResults.isNotEmpty() &&
              grantResults[0] == PackageManager.PERMISSION_GRANTED
         ){
              checkLocationSettings()
         } else {
              Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show()
}
package com.example.phone_tracker
import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.location.Location
import android.os.Bundle
import android.provider.Settings
import android.util.Log
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import com.google.android.gms.location.*
class MainActivity : AppCompatActivity() {
  private lateinit var fusedLocationClient: FusedLocationProviderClient
  private lateinit var locationText: TextView
  private val locationPermissionRequestCode = 1001
  private val tag = "PhoneTracker"
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    locationText = findViewById(R.id.locationText)
    val getLocationBtn = findViewById<Button>(R.id.getLocationBtn)
    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
    getLocationBtn.setOnClickListener {
         checkLocationPermission()
private fun checkLocationPermission() {
    if (ActivityCompat.checkSelfPermission(
           this,
           Manifest.permission.ACCESS_FINE_LOCATION
         ) != PackageManager.PERMISSION_GRANTED
    ){
         ActivityCompat.requestPermissions(
           this,
           arrayOf(
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.ACCESS_COARSE_LOCATION
           ),
           locationPermissionRequestCode
        )
    } else {
        checkLocationSettings()
private fun checkLocationSettings() {
    val locationRequest = LocationRequest.create().apply {
        priority = LocationRequest.PRIORITY_HIGH_ACCURACY
    val builder = LocationSettingsRequest.Builder()
        .addLocationRequest(locationRequest)
        .setAlwaysShow(true)
    val client = LocationServices.getSettingsClient(this)
    val task = client.checkLocationSettings(builder.build())
    task.addOnSuccessListener {
        getLastKnownLocation()
    task.addOnFailureListener {
        Toast.makeText(this, "Please turn on location services", Toast.LENGTH_LONG).show()
        val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
         startActivity(intent)
private fun getLastKnownLocation() {
    if (ActivityCompat.checkSelfPermission(
             this,
             Manifest.permission.ACCESS_FINE_LOCATION
         ) != PackageManager.PERMISSION_GRANTED
    ){
         Toast.makeText(this, "Permission not granted", Toast.LENGTH_SHORT).show()
         return
    fusedLocationClient.lastLocation.addOnSuccessListener { location: Location? ->
         if (location != null) {
             val lat = location.latitude
             val lon = location.longitude
             val locationString = "Lat: $lat\nLon: $lon"
             locationText.text = locationString
             Log.d(tag, locationString)
         } else {
             locationText.text = "Location not found"
             Log.w(tag, "Location is null")
         }
         }.addOnFailureListener { e ->
              locationText.text = "Error getting location: ${e.message}"
              Log.e(tag, "Location error: ${e.message}")
    override fun onRequestPermissionsResult(
         requestCode: Int, permissions: Array<out String>, grantResults: IntArray
    ){
         super.onRequestPermissionsResult(requestCode, permissions, grantResults)
         if (requestCode == locationPermissionRequestCode &&
              grantResults.isNotEmpty() &&
              grantResults[0] == PackageManager.PERMISSION_GRANTED
         ){
              checkLocationSettings()
         } else {
              Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show()