Skip to content

Commit 7fa7bf8

Browse files
committed
Added a receiver for incoming cals
1 parent a9c044f commit 7fa7bf8

File tree

5 files changed

+57
-17
lines changed

5 files changed

+57
-17
lines changed

android/app/src/main/AndroidManifest.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
android:required="false" />
99

1010
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
11+
<uses-permission android:name="android.permission.READ_CALL_LOG" />
1112
<uses-permission android:name="android.permission.READ_SMS" />
1213
<uses-permission android:name="android.permission.SEND_SMS" />
1314
<uses-permission android:name="android.permission.RECEIVE_SMS" />
@@ -67,6 +68,12 @@
6768
</intent-filter>
6869
</receiver>
6970

71+
<receiver android:enabled="true" android:exported="true" android:name=".receivers.PhoneStateReceiver" android:permission="android.permission.READ_PHONE_STATE">
72+
<intent-filter>
73+
<action android:name="android.intent.action.PHONE_STATE" />
74+
</intent-filter>
75+
</receiver>
76+
7077
<receiver android:enabled="true"
7178
android:name=".receivers.BootReceiver"
7279
android:exported="true"

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

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import androidx.work.ExistingPeriodicWorkPolicy
2323
import androidx.work.NetworkType
2424
import androidx.work.PeriodicWorkRequestBuilder
2525
import androidx.work.WorkManager
26-
import com.google.android.gms.common.GoogleApiAvailability
2726
import com.google.android.material.button.MaterialButton
2827
import com.google.android.material.card.MaterialCardView
2928
import com.google.android.material.progressindicator.LinearProgressIndicator
@@ -108,26 +107,14 @@ class MainActivity : AppCompatActivity() {
108107
if(!Settings.isLoggedIn(context)) {
109108
return
110109
}
111-
112110
Timber.d("requesting permissions")
113111
val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
114112
permissions.entries.forEach {
115113
Timber.d("${it.key} = ${it.value}")
116114
}
117115
}
118-
119-
var permissions = arrayOf(
120-
Manifest.permission.SEND_SMS,
121-
Manifest.permission.RECEIVE_SMS,
122-
Manifest.permission.READ_SMS
123-
)
124-
125-
if(Build.VERSION.SDK_INT >= 33) {
126-
permissions += Manifest.permission.POST_NOTIFICATIONS
127-
}
128-
116+
val permissions = arrayOf(Manifest.permission.READ_CALL_LOG)
129117
requestPermissionLauncher.launch(permissions)
130-
131118
Timber.d("creating permissions launcher")
132119
}
133120

@@ -323,7 +310,7 @@ class MainActivity : AppCompatActivity() {
323310
}
324311

325312
Thread {
326-
var charging = Settings.isCharging(applicationContext)
313+
val charging = Settings.isCharging(applicationContext)
327314
var error: String? = null
328315
try {
329316
HttpSmsApiService.create(context).storeHeartbeat(Settings.getSIM1PhoneNumber(context), charging)

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
package com.httpsms
22

3+
import android.Manifest
34
import android.content.Context
45
import android.content.Intent
6+
import android.os.Build
7+
import android.os.Build.VERSION_CODES
58
import android.os.Bundle
9+
import androidx.activity.result.contract.ActivityResultContracts
610
import androidx.appcompat.app.AppCompatActivity
11+
import androidx.core.content.ContextCompat
712
import androidx.core.widget.doAfterTextChanged
813
import com.google.android.material.appbar.MaterialToolbar
914
import com.google.android.material.button.MaterialButton
@@ -114,6 +119,29 @@ class SettingsActivity : AppCompatActivity() {
114119
return findViewById(R.id.settings_toolbar)
115120
}
116121

122+
private fun requestReadCallLogPermission(context: Context) {
123+
Timber.d("requesting permissions")
124+
val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
125+
permissions.entries.forEach {
126+
Timber.d("${it.key} = ${it.value}")
127+
}
128+
}
129+
130+
var permissions = arrayOf(
131+
Manifest.permission.SEND_SMS,
132+
Manifest.permission.RECEIVE_SMS,
133+
Manifest.permission.READ_SMS
134+
)
135+
136+
if(Build.VERSION.SDK_INT >= 33) {
137+
permissions += Manifest.permission.POST_NOTIFICATIONS
138+
}
139+
140+
requestPermissionLauncher.launch(permissions)
141+
142+
Timber.d("creating permissions launcher")
143+
}
144+
117145
private fun onLogoutClick() {
118146
Timber.d("logout button clicked")
119147
MaterialAlertDialogBuilder(this)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.httpsms.receivers
2+
3+
import android.content.BroadcastReceiver
4+
import android.content.Context
5+
import android.content.Intent
6+
import android.telephony.TelephonyManager
7+
import timber.log.Timber
8+
9+
10+
class PhoneStateReceiver : BroadcastReceiver() {
11+
override fun onReceive(context: Context, intent: Intent) {
12+
Timber.d("onReceive: ${intent.action}")
13+
val stateStr = intent.extras!!.getString(TelephonyManager.EXTRA_STATE)
14+
val subscriptionId = intent.extras!!.getString(TelephonyManager.EXTRA_SUBSCRIPTION_ID)
15+
val number = intent.extras!!.getString(TelephonyManager.EXTRA_INCOMING_NUMBER)
16+
Timber.w("state = [${stateStr}] number = [${number}], subscriptionID = [${subscriptionId}]")
17+
}
18+
}

android/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ buildscript {
1717
}
1818

1919
plugins {
20-
id 'com.android.application' version '8.3.0' apply false
21-
id 'com.android.library' version '8.3.0' apply false
20+
id 'com.android.application' version '8.3.2' apply false
21+
id 'com.android.library' version '8.3.2' apply false
2222
id 'org.jetbrains.kotlin.android' version '1.6.21' apply false
2323
}
2424

0 commit comments

Comments
 (0)