Skip to content

Commit 34f278a

Browse files
committed
Update MyCallScreeningService to use SpamUtils
1 parent a1ba4ef commit 34f278a

File tree

1 file changed

+48
-15
lines changed

1 file changed

+48
-15
lines changed
Lines changed: 48 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,67 @@
11
package com.addev.listaspam
22

33
import android.content.Context
4+
import android.net.Uri
5+
import android.os.Build
46
import android.telecom.Call
57
import android.telecom.CallScreeningService
8+
import android.telecom.TelecomManager
9+
import android.telephony.TelephonyManager
10+
import android.widget.Toast
11+
import androidx.annotation.RequiresApi
612

713
class MyCallScreeningService : CallScreeningService() {
814

15+
val spamUtils = SpamUtils()
16+
917
companion object {
1018
private const val SPAM_PREFS = "SPAM_PREFS"
1119
private const val BLOCK_NUMBERS_KEY = "BLOCK_NUMBERS"
1220
}
1321

14-
override fun onScreenCall(callDetails: Call.Details) {
15-
val sharedPreferences = getSharedPreferences(SPAM_PREFS, Context.MODE_PRIVATE)
16-
val blockedNumbers = sharedPreferences.getStringSet(BLOCK_NUMBERS_KEY, null)
17-
val incomingNumber = callDetails.handle.schemeSpecificPart
22+
@RequiresApi(Build.VERSION_CODES.Q)
23+
override fun onScreenCall(details: Call.Details) {
24+
if (details.callDirection != Call.Details.DIRECTION_INCOMING)
25+
return
1826

19-
if (blockedNumbers?.contains(incomingNumber) == true) {
20-
respondToCall(callDetails, CallResponse.Builder()
21-
.setDisallowCall(true)
22-
.setRejectCall(true)
23-
.build())
27+
var rawNumber = ""
28+
if (details.handle != null) {
29+
rawNumber = details.handle.schemeSpecificPart
30+
} else if (details.gatewayInfo?.originalAddress != null){
31+
rawNumber = details.gatewayInfo?.originalAddress?.schemeSpecificPart!!
32+
} else if (details.intentExtras != null) {
33+
var uri = details.intentExtras.getParcelable<Uri>(TelecomManager.EXTRA_INCOMING_CALL_ADDRESS)
34+
if (uri == null) {
35+
uri = details.intentExtras.getParcelable<Uri>(TelephonyManager.EXTRA_INCOMING_NUMBER)
36+
}
37+
if (uri != null) {
38+
rawNumber = uri.schemeSpecificPart
39+
}
40+
}
41+
42+
rawNumber?.let {
43+
val sharedPreferences = getSharedPreferences(SPAM_PREFS, Context.MODE_PRIVATE)
44+
val blockedNumbers = sharedPreferences.getStringSet(BLOCK_NUMBERS_KEY, null)
45+
46+
if (blockedNumbers?.contains(rawNumber) == true) {
47+
endCall(details)
48+
return
49+
}
50+
51+
spamUtils.checkSpamNumber(this, it) { isSpam ->
52+
if (isSpam) {
53+
endCall(details)
54+
}
55+
}
2456
}
2557
}
2658

27-
private fun blockCall(callDetails: Call.Details) {
28-
val callResponse = CallResponse.Builder()
29-
.setDisallowCall(true)
30-
.setRejectCall(true)
31-
.build()
32-
respondToCall(callDetails, callResponse)
59+
private fun endCall(details: Call.Details) {
60+
respondToCall(
61+
details, CallResponse.Builder()
62+
.setDisallowCall(true)
63+
.setRejectCall(true)
64+
.build()
65+
)
3366
}
3467
}

0 commit comments

Comments
 (0)