Commit 962721e4 by zhangchengbo

fix:只对会话Conversation-title显示进行脱敏操作,优化代码

parent 8af9c605
......@@ -17,6 +17,8 @@ import com.secspace.sms.models.Conversation
import com.secspace.sms.models.Message
import com.secspace.sms.models.RecentCall
import com.secspace.sms.popup.MyPushWindow
import com.secspace.sms.util.AES
import com.secspace.sms.util.PhoneFromUtil
import com.secspace.sms.util.PhoneUtils
import com.secspace.sms.util.SmsCountUtil
import com.simplemobiletools.commons.extensions.baseConfig
......@@ -28,11 +30,10 @@ import com.simplemobiletools.commons.helpers.SimpleContactsHelper
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.models.PhoneNumber
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.commons.util.GsonUtil
class SmsReceiver : BroadcastReceiver() {
private val TAG: String = "shuju"
private var lastNumber = ""
private val TAG: String = "SmsReceiver"
override fun onReceive(context: Context, intent: Intent) {
......@@ -64,13 +65,13 @@ class SmsReceiver : BroadcastReceiver() {
val simpleContactsHelper = SimpleContactsHelper(context)
simpleContactsHelper.exists(address, privateCursor) { exists ->
if (exists) {
handleMessage(context, address, subject, body, date, read, threadId, type, subscriptionId, status) {
handleMessage(context, address, subject, body, date, read, threadId, type, subscriptionId, status, it) {
badgeTotalNumber(context)
}
}
}
} else {
handleMessage(context, address, subject, body, date, read, threadId, type, subscriptionId, status) {
handleMessage(context, address, subject, body, date, read, threadId, type, subscriptionId, status, it) {
badgeTotalNumber(context)
}
}
......@@ -84,47 +85,47 @@ class SmsReceiver : BroadcastReceiver() {
* 1.先从短信DB库查找
* 2.未找到再从 通话记录中查找
*/
private fun findConversationWithPhoneNumber(context: Context, phoneNumber: String, threadId: Long, confirmCallBack: () -> Unit) {
Log.d(TAG, "----SmsReceiver---- phoneNumber:${phoneNumber} threadId:$threadId")
private fun findConversationWithPhoneNumber(context: Context, phoneNumber: String, threadId: Long, confirmCallBack: (String) -> Unit) {
var lastNumber = ""
// Log.d(TAG, "----SmsReceiver---- phoneNumber:${phoneNumber} threadId:$threadId")
val hasPerMissionResult = context.hasPermission(PERMISSION_READ_CALL_LOG)
if (hasPerMissionResult) {
val allConversations = context.conversationsDB.getNonArchived() as ArrayList<Conversation>
// Log.d(TAG, "----SmsReceiver----handleMessage allConversations:${GsonUtil.parseListToJson(allConversations)}")
//1
allConversations.forEach {
if (it.title.trim() == phoneNumber && it.isSFNumber) {
lastNumber = it.phoneNumber
Log.d(TAG, "----SmsReceiver--conversationsDB数据库--lastNumber :$lastNumber")
return@forEach
}
}
//2
if (lastNumber.isEmpty()) {
RecentsHelper(context = context).getRecentCalls(false, Int.MAX_VALUE) { recents: List<RecentCall> ->
val listCallRecent: List<RecentCall> = recents.distinctBy { it.phoneNumber }
// Log.d(TAG, "----SmsReceiver----最近通话 recents:${GsonUtil.parseListToJson(listCallRecent)}")
val findResult: Int = listCallRecent.count { it.phoneNumber.trim() == phoneNumber.trim() && it.isShunFeng }
Log.d(TAG, "----SmsReceiver----findResult:${findResult}")
val findResult = listCallRecent.filter { it.isShunFeng }.count {
// Log.d(TAG, "----SmsReceiver----findResult isNumber = ${PhoneFromUtil.isNumeric(it.phoneNumber)}")
if (PhoneFromUtil.isNumeric(it.phoneNumber)) {
it.phoneNumber == phoneNumber
} else {
AES.decrypt(it.phoneNumber) == phoneNumber
}
}
// Log.d(TAG, "----SmsReceiver----findResult:${findResult} phoneNumber = ${phoneNumber.trim()}")
//从最近通话记录中找到了号码 进行掩码操作
if (findResult > 0) {
PhoneUtils.phoneNumberFormat(phoneNumber) { itNumber ->
/* Log.d(
TAG,
"----SmsReceiver----手机号掩码操作 itNumber:${itNumber} threadId:$threadId context.getThreadId:${
context.getThreadId(
phoneNumber
)
}"
)*/
lastNumber = itNumber
}
}
}
}
}
confirmCallBack.invoke()
confirmCallBack.invoke(lastNumber)
}
......@@ -140,6 +141,7 @@ class SmsReceiver : BroadcastReceiver() {
type: Int,
subscriptionId: Int,
status: Int,
aesPhoneNumber: String,
confirmCallBack: () -> Unit
) {
if (isMessageFilteredOut(context, body)) {
......@@ -155,8 +157,8 @@ class SmsReceiver : BroadcastReceiver() {
val conversation: Conversation = context.getConversations(threadId).firstOrNull() ?: return@ensureBackgroundThread
if (lastNumber.isNotBlank()) {
conversation.phoneNumber = lastNumber
if (aesPhoneNumber.isNotBlank()) {
conversation.title = aesPhoneNumber
conversation.isSFNumber = true
}
// Log.d(TAG, "----SmsReceiver----handleConversation 掩码后的 Json:${GsonUtil.parseBeanToJson(conversation)}")
......@@ -165,25 +167,20 @@ class SmsReceiver : BroadcastReceiver() {
} catch (ignored: Exception) {
}
try {
context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations())
} catch (ignored: Exception) {
}
val senderName = context.getNameFromAddress(address, privateCursor)
val phoneNumber = PhoneNumber(address, 0, "", address)
var senderName = context.getNameFromAddress(address, privateCursor)
var phoneNumber = PhoneNumber(address, 0, "", address)
if (lastNumber.isNotBlank()) {
senderName = context.getNameFromAddress(lastNumber, privateCursor)
phoneNumber = PhoneNumber(lastNumber, 0, "", lastNumber)
}
/*if (aesPhoneNumber.isNotBlank()) {
senderName = context.getNameFromAddress(aesPhoneNumber, privateCursor)
phoneNumber = PhoneNumber(aesPhoneNumber, 0, "", aesPhoneNumber)
}*/
val participant = SimpleContact(0, 0, senderName, photoUri, arrayListOf(phoneNumber), ArrayList(), ArrayList())
val participants = arrayListOf(participant)
val messageDate = (date / 1000).toInt()
var message =
val message =
Message(
newMessageId,
body,
......@@ -200,7 +197,7 @@ class SmsReceiver : BroadcastReceiver() {
photoUri,
subscriptionId
)
if (lastNumber.isNotBlank()) {
/*if (aesPhoneNumber.isNotBlank()) {
message =
Message(
newMessageId,
......@@ -213,20 +210,20 @@ class SmsReceiver : BroadcastReceiver() {
threadId,
false,
null,
lastNumber,
aesPhoneNumber,
senderName,
photoUri,
subscriptionId
)
}
}*/
// Log.d(TAG, "----SmsReceiver----handleMessage message:${GsonUtil.parseBeanToJson(message)}")
context.messagesDB.insertOrUpdate(message)
if (context.config.isArchiveAvailable) {
context.updateConversationArchivedStatus(threadId, false)
}
refreshMessages()
if (lastNumber.isNotBlank()) {
context.showReceivedMessageNotification(newMessageId, lastNumber, body, threadId, bitmap)
if (aesPhoneNumber.isNotBlank()) {
context.showReceivedMessageNotification(newMessageId, aesPhoneNumber, body, threadId, bitmap)
} else {
context.showReceivedMessageNotification(newMessageId, address, body, threadId, bitmap)
......@@ -234,15 +231,14 @@ class SmsReceiver : BroadcastReceiver() {
}
}
if (lastNumber.isNotBlank()) {
val tipPopup = MyPushWindow(context, lastNumber, body)
if (aesPhoneNumber.isNotBlank()) {
val tipPopup = MyPushWindow(context, aesPhoneNumber, body)
tipPopup.show()
} else {
val tipPopup = MyPushWindow(context, address, body)
tipPopup.show()
}
}
lastNumber = ""
confirmCallBack.invoke()
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment