Skip to content

Commit 448d216

Browse files
committed
Create switch button to enable incoming call events
1 parent 7fa7bf8 commit 448d216

File tree

6 files changed

+82
-22
lines changed

6 files changed

+82
-22
lines changed

android/app/src/main/java/com/httpsms/MainActivity.kt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,17 +104,25 @@ class MainActivity : AppCompatActivity() {
104104
}
105105

106106
private fun requestPermissions(context:Context) {
107-
if(!Settings.isLoggedIn(context)) {
108-
return
109-
}
110107
Timber.d("requesting permissions")
111108
val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
112109
permissions.entries.forEach {
113110
Timber.d("${it.key} = ${it.value}")
114111
}
115112
}
116-
val permissions = arrayOf(Manifest.permission.READ_CALL_LOG)
113+
114+
var permissions = arrayOf(
115+
Manifest.permission.SEND_SMS,
116+
Manifest.permission.RECEIVE_SMS,
117+
Manifest.permission.READ_SMS
118+
)
119+
120+
if(Build.VERSION.SDK_INT >= 33) {
121+
permissions += Manifest.permission.POST_NOTIFICATIONS
122+
}
123+
117124
requestPermissionLauncher.launch(permissions)
125+
118126
Timber.d("creating permissions launcher")
119127
}
120128

android/app/src/main/java/com/httpsms/Settings.kt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ object Settings {
1616
private const val SETTINGS_SIM2_ACTIVE = "SETTINGS_SIM2_ACTIVE_STATUS"
1717
private const val SETTINGS_SIM1_INCOMING_ACTIVE = "SETTINGS_SIM1_INCOMING_ACTIVE"
1818
private const val SETTINGS_SIM2_INCOMING_ACTIVE = "SETTINGS_SIM2_INCOMING_ACTIVE"
19+
private const val SETTINGS_SIM1_INCOMING_CALL_ACTIVE = "SETTINGS_SIM1_INCOMING_CALL_ACTIVE"
20+
private const val SETTINGS_SIM2_INCOMING_CALL_ACTIVE = "SETTINGS_SIM2_INCOMING_CALL_ACTIVE"
1921
private const val SETTINGS_DEBUG_LOG_ENABLED = "SETTINGS_DEBUG_LOG_ENABLED"
2022
private const val SETTINGS_API_KEY = "SETTINGS_API_KEY"
2123
private const val SETTINGS_SERVER_URL = "SETTINGS_SERVER_URL"
@@ -114,6 +116,32 @@ object Settings {
114116
return activeStatus
115117
}
116118

119+
fun isIncomingCallEventsEnabled(context: Context, sim: String): Boolean {
120+
var setting = this.SETTINGS_SIM1_INCOMING_CALL_ACTIVE
121+
if (sim == Constants.SIM2) {
122+
setting = this.SETTINGS_SIM2_INCOMING_CALL_ACTIVE
123+
}
124+
val activeStatus = PreferenceManager
125+
.getDefaultSharedPreferences(context)
126+
.getBoolean(setting,false)
127+
128+
Timber.d("SETTINGS_${sim}_INCOMING_CALL_ACTIVE: [$activeStatus]")
129+
return activeStatus
130+
}
131+
132+
fun setIncomingCallEventsEnabled(context: Context, sim: String, enabled: Boolean) {
133+
var setting = this.SETTINGS_SIM1_INCOMING_CALL_ACTIVE
134+
if (sim == Constants.SIM2) {
135+
setting = this.SETTINGS_SIM2_INCOMING_CALL_ACTIVE
136+
}
137+
138+
PreferenceManager.getDefaultSharedPreferences(context)
139+
.edit()
140+
.putBoolean(setting, enabled)
141+
.apply()
142+
}
143+
144+
117145
fun isDebugLogEnabled(context: Context) : Boolean {
118146
Timber.d(Settings::isDebugLogEnabled.name)
119147

android/app/src/main/java/com/httpsms/SettingsActivity.kt

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,16 @@ class SettingsActivity : AppCompatActivity() {
6868
sim2OutgoingMessages.setOnCheckedChangeListener{ _, isChecked -> run { Settings.setActiveStatusAsync(context, isChecked, Constants.SIM2) } }
6969

7070
handleEncryptionSettings(context)
71+
handleIncomingCallEventsSim1(context)
72+
}
73+
74+
private fun handleIncomingCallEventsSim1(context: Context) {
75+
val enableIncomingCallEvents = findViewById<SwitchMaterial>(R.id.settingsSim1EnableIncomingCallEvents)
76+
enableIncomingCallEvents.isChecked = Settings.isIncomingCallEventsEnabled(context, Constants.SIM1)
77+
enableIncomingCallEvents.setOnCheckedChangeListener{ _, isChecked -> run {
78+
requestReadCallLogPermission(context)
79+
Timber.d("how are you [${isChecked}]")
80+
}}
7181
}
7282

7383
private fun handleEncryptionSettings(context: Context) {
@@ -120,25 +130,21 @@ class SettingsActivity : AppCompatActivity() {
120130
}
121131

122132
private fun requestReadCallLogPermission(context: Context) {
133+
if(!Settings.isLoggedIn(context)) {
134+
return
135+
}
123136
Timber.d("requesting permissions")
124137
val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
125138
permissions.entries.forEach {
126139
Timber.d("${it.key} = ${it.value}")
127140
}
128141
}
129-
130-
var permissions = arrayOf(
131-
Manifest.permission.SEND_SMS,
132-
Manifest.permission.RECEIVE_SMS,
133-
Manifest.permission.READ_SMS
142+
val permissions = arrayOf(
143+
Manifest.permission.READ_CALL_LOG,
144+
Manifest.permission.READ_PHONE_STATE
134145
)
135146

136-
if(Build.VERSION.SDK_INT >= 33) {
137-
permissions += Manifest.permission.POST_NOTIFICATIONS
138-
}
139-
140147
requestPermissionLauncher.launch(permissions)
141-
142148
Timber.d("creating permissions launcher")
143149
}
144150

android/app/src/main/java/com/httpsms/receivers/PhoneStateReceiver.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,11 @@ class PhoneStateReceiver : BroadcastReceiver() {
1414
val subscriptionId = intent.extras!!.getString(TelephonyManager.EXTRA_SUBSCRIPTION_ID)
1515
val number = intent.extras!!.getString(TelephonyManager.EXTRA_INCOMING_NUMBER)
1616
Timber.w("state = [${stateStr}] number = [${number}], subscriptionID = [${subscriptionId}]")
17+
val bundle = intent.extras
18+
if (bundle != null) {
19+
for (key in bundle.keySet()) {
20+
Timber.w(key + " : " + if (bundle[key] != null) bundle[key] else "NULL")
21+
}
22+
}
1723
}
1824
}

android/app/src/main/res/layout/activity_settings.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,17 @@
7676
android:textSize="18sp"
7777
tools:ignore="TouchTargetSizeCheck" />
7878

79+
80+
<com.google.android.material.switchmaterial.SwitchMaterial
81+
android:id="@+id/settingsSim1EnableIncomingCallEvents"
82+
android:layout_width="match_parent"
83+
android:layout_height="wrap_content"
84+
android:layout_marginBottom="16dp"
85+
android:minHeight="48dp"
86+
android:text="@string/enable_incoming_call_events_sim1"
87+
android:textSize="18sp"
88+
tools:ignore="TouchTargetSizeCheck" />
89+
7990
<com.google.android.material.textfield.TextInputLayout
8091
android:id="@+id/settingsSIM2Layout"
8192
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"

android/app/src/main/res/values/strings.xml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,14 @@
2020
<string name="main_app_settings">App Settings</string>
2121
<string name="settings_sim1">SIM1</string>
2222
<string name="settings_sim_2">SIM2</string>
23-
<string name="settings_outgoing_messages_sim1">Enable Outgoing Messages (SIM1)</string>
24-
<string name="settings_incoming_messages_sim1">Enable Incoming Messages (SIM1)</string>
25-
<string name="settings_incoming_messages_sim2">Enable Incoming Messages (SIM2)</string>
26-
<string name="settings_outgoing_messages_sim2">Enable Outgoing Messages (SIM2)</string>
27-
<string name="login_phone_number_sim1">Phone Number (SIM1)</string>
28-
<string name="login_phone_number_sim2">Phone Number (SIM2)</string>
23+
<string name="settings_outgoing_messages_sim1">Enable SIM1 outgoing messages</string>
24+
<string name="settings_incoming_messages_sim1">Enable SIM1 incoming messages</string>
25+
<string name="settings_incoming_messages_sim2">Enable SIM2 incoming messages</string>
26+
<string name="settings_outgoing_messages_sim2">Enable SIM2 outgoing messages</string>
27+
<string name="login_phone_number_sim1">Phone number (SIM1)</string>
28+
<string name="login_phone_number_sim2">Phone number (SIM2)</string>
2929
<string name="encryption_key">Encryption Key</string>
30-
<string name="encrypt_received_messages">Encrypt Received Messages</string>
31-
<string name="enable_debug_logs">Enable Debug Logs</string>
30+
<string name="encrypt_received_messages">Encrypt received messages</string>
31+
<string name="enable_debug_logs">Enable debug logs</string>
32+
<string name="enable_incoming_call_events_sim1">Enable SIM1 incoming call events</string>
3233
</resources>

0 commit comments

Comments
 (0)