package com.example.
phone_tracker
import android.Manifest
import android.annotation.SuppressLint
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.telephony.SubscriptionManager
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
class WelcomeActivity : AppCompatActivity() {
private lateinit var outputText: TextView
private lateinit var allowBtn: Button
private val permissionRequestCode = 101
private val tag = "PhoneTracker"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_welcome)
outputText = findViewById(R.id.outputText)
allowBtn = findViewById(R.id.allowBtn)
allowBtn.setOnClickListener {
requestSimPermissions()
private fun requestSimPermissions() {
val permissions = arrayOf(
Manifest.permission.READ_PHONE_NUMBERS,
Manifest.permission.READ_PHONE_STATE
if (ActivityCompat.checkSelfPermission(
this,
Manifest.permission.READ_PHONE_NUMBERS
) == PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(
this,
Manifest.permission.READ_PHONE_STATE
) == PackageManager.PERMISSION_GRANTED
){
val number = getSimPhoneNumber()
outputText.text = "SIM Phone Number: $number"
Log.d(tag, "Phone number: $number")
} else {
ActivityCompat.requestPermissions(this, permissions, permissionRequestCode)
@SuppressLint("MissingPermission")
private fun getSimPhoneNumber(): String {
val subscriptionManager = getSystemService(TELEPHONY_SUBSCRIPTION_SERVICE) as
SubscriptionManager
val subscriptions = subscriptionManager.activeSubscriptionInfoList
return if (subscriptions != null && subscriptions.isNotEmpty()) {
val number = subscriptions[0].number
if (number.isNullOrEmpty()) "Phone number not available" else number
} else {
"No SIM card found"
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
){
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == permissionRequestCode && grantResults.all { it ==
PackageManager.PERMISSION_GRANTED }) {
val number = getSimPhoneNumber()
outputText.text = "SIM Phone Number: $number"
Log.d(tag, "Phone number: $number")
} else {
Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show()