@@ -5,12 +5,14 @@ import android.annotation.SuppressLint
55import android.content.Context
66import android.content.Intent
77import android.content.pm.PackageManager
8+ import android.os.Build
89import android.os.Bundle
910import android.telephony.PhoneNumberUtils
1011import android.telephony.TelephonyManager
1112import android.view.View
1213import android.webkit.URLUtil
1314import android.widget.LinearLayout
15+ import androidx.activity.result.contract.ActivityResultContracts
1416import androidx.appcompat.app.AppCompatActivity
1517import androidx.core.app.ActivityCompat
1618import androidx.lifecycle.MutableLiveData
@@ -32,15 +34,28 @@ class LoginActivity : AppCompatActivity() {
3234 setServerURL()
3335 }
3436
37+ override fun onStart () {
38+ super .onStart()
39+ Timber .i(" on start" )
40+ requestPermissions()
41+ }
42+
43+ override fun onResume () {
44+ super .onResume()
45+ }
46+
3547 private fun registerListeners () {
3648 loginButton().setOnClickListener { onLoginClick() }
3749 }
3850
3951 private fun disableSim2 () {
4052 if (SmsManagerService .isDualSIM(this )) {
4153 Timber .d(" dual sim detected" )
54+ val sim2Layout = findViewById<LinearLayout >(R .id.loginPhoneNumberLayoutSIM2)
55+ sim2Layout.visibility = LinearLayout .VISIBLE
4256 return
4357 }
58+ Timber .e(" is dual sim ${SmsManagerService .isDualSIM(this )} " )
4459 val sim2Layout = findViewById<LinearLayout >(R .id.loginPhoneNumberLayoutSIM2)
4560 sim2Layout.visibility = View .GONE
4661 }
@@ -54,7 +69,7 @@ class LoginActivity : AppCompatActivity() {
5469
5570 val phoneInput = findViewById<TextInputEditText >(R .id.loginPhoneNumberInputSIM1)
5671 phoneInput.setText(phoneNumber)
57- Timber .d(" phone number [$phoneNumber ] set successfully" )
72+ Timber .d(" [SIM1] phone number [$phoneNumber ] set successfully" )
5873 }
5974
6075 private fun setServerURL () {
@@ -88,6 +103,31 @@ class LoginActivity : AppCompatActivity() {
88103 return telephonyManager.line1Number
89104 }
90105
106+ private fun requestPermissions () {
107+ Timber .d(" requesting permissions" )
108+ val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts .RequestMultiplePermissions ()) { permissions ->
109+ permissions.entries.forEach {
110+ Timber .d(" ${it.key} = ${it.value} " )
111+ }
112+ }
113+
114+ var permissions = arrayOf(
115+ Manifest .permission.SEND_SMS ,
116+ Manifest .permission.RECEIVE_SMS ,
117+ Manifest .permission.READ_PHONE_NUMBERS ,
118+ Manifest .permission.READ_SMS ,
119+ Manifest .permission.READ_PHONE_STATE
120+ )
121+
122+ if (Build .VERSION .SDK_INT >= 33 ) {
123+ permissions + = Manifest .permission.POST_NOTIFICATIONS
124+ }
125+
126+ requestPermissionLauncher.launch(permissions)
127+
128+ Timber .d(" creating permissions launcher" )
129+ }
130+
91131
92132 private fun onLoginClick () {
93133 Timber .d(" login button clicked" )
@@ -132,7 +172,7 @@ class LoginActivity : AppCompatActivity() {
132172 ! PhoneNumberUtils .isWellFormedSmsAddress(phoneNumber.text.toString()) ||
133173 ! PhoneNumberUtils .isGlobalPhoneNumber(phoneNumber.text.toString())
134174 ) {
135- Timber .e(" phone number [${phoneNumber.text.toString()} ] is not valid" )
175+ Timber .e(" [SIM1] phone number [${phoneNumber.text.toString()} ] is not valid" )
136176 resetView()
137177 phoneNumberLayout.error = " Invalid E.164 phone number"
138178 return
@@ -144,7 +184,7 @@ class LoginActivity : AppCompatActivity() {
144184 ! PhoneNumberUtils .isGlobalPhoneNumber(phoneNumberSIM2.text.toString())
145185 )
146186 ) {
147- Timber .e(" phone number [${phoneNumberSIM2.text.toString()} ] is not valid" )
187+ Timber .e(" [SIM2] phone number [${phoneNumberSIM2.text.toString()} ] is not valid" )
148188 resetView()
149189 phoneNumberLayoutSIM2.error = " Invalid E.164 phone number"
150190 return
0 commit comments