From fc3f6c58ce217283cc2b9dea605f188286a90a28 Mon Sep 17 00:00:00 2001 From: partisan Date: Thu, 5 Jun 2025 09:11:05 +0200 Subject: [PATCH] Anonymized phone number logging --- .../xyz/pulse/CallRedirectionService.kt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/partisan/weforge/xyz/pulse/CallRedirectionService.kt b/app/src/main/java/partisan/weforge/xyz/pulse/CallRedirectionService.kt index 179014c..a8643dc 100644 --- a/app/src/main/java/partisan/weforge/xyz/pulse/CallRedirectionService.kt +++ b/app/src/main/java/partisan/weforge/xyz/pulse/CallRedirectionService.kt @@ -101,16 +101,17 @@ class CallRedirectionService : CallRedirectionService() { } val phoneNumber = handle.schemeSpecificPart - Log.d("Redirection", "Resolved phone number: $phoneNumber") + val numberAlias = getAnonymizedNumberAlias(phoneNumber) + Log.d("Redirection", "Processing call to: $numberAlias") if (prefs.redirectInternationalOnly && !isInternationalNumber(phoneNumber)) { - Log.d("Redirection", "Aborting: number is not international and pref requires it") + Log.d("Redirection", "Aborting: number $numberAlias is not international and pref requires it") placeCallUnmodified() return } if (prefs.isBlacklistEnabled && !prefs.isContactWhitelisted(phoneNumber)) { - Log.d("Redirection", "Aborting: number is not in whitelist while blacklist is enabled") + Log.d("Redirection", "Aborting: number $numberAlias is not in whitelist while blacklist is enabled") placeCallUnmodified() return } @@ -118,7 +119,7 @@ class CallRedirectionService : CallRedirectionService() { val records: Array try { records = getRecordsFromPhoneNumber(phoneNumber) - Log.d("Redirection", "Found ${records.size} raw records for contact") + Log.d("Redirection", "Found ${records.size} raw redirect apps for number $numberAlias") } catch (exc: SecurityException) { Log.w("Redirection", "SecurityException during record fetch", exc) placeCallUnmodified() @@ -129,11 +130,11 @@ class CallRedirectionService : CallRedirectionService() { .filter { prefs.isServiceEnabled(it.mimetype) } .sortedBy { prefs.getServicePriority(it.mimetype) } - Log.d("Redirection", "Filtered to ${enabledRecords.size} enabled records") + Log.d("Redirection", "Filtered to ${enabledRecords.size} enabled redirect apps") val record = enabledRecords.firstOrNull() if (record == null) { - Log.d("Redirection", "Aborting: no suitable record found for redirection") + Log.d("Redirection", "Aborting: no suitable redirect apps found for number $numberAlias") placeCallUnmodified() return } @@ -199,6 +200,11 @@ class CallRedirectionService : CallRedirectionService() { return results.toTypedArray() } + private fun getAnonymizedAlias(number: String): String { + val contactId = getContactIdByPhoneNumber(number) + return if (contactId != null) "#$contactId" else "#???" + } + private fun isInternationalNumber(phoneNumber: String): Boolean { val telephony = getSystemService(TelephonyManager::class.java) ?: return true val simCountryIso = telephony.simCountryIso?.lowercase() ?: return true