新增: {{PHONE_AREA}} 标签用于反查{{FROM}}对应的归属地 #564

This commit is contained in:
pppscn 2025-02-13 19:18:05 +08:00
parent b733fc2d4c
commit 23acf01c61
7 changed files with 67 additions and 0 deletions

View File

@ -417,6 +417,7 @@ class App : Application(), CactusCallback, Configuration.Provider by Core {
getString(R.string.tag_card_slot) to getString(R.string.insert_tag_card_slot), getString(R.string.tag_card_slot) to getString(R.string.insert_tag_card_slot),
getString(R.string.tag_card_subid) to getString(R.string.insert_tag_card_subid), getString(R.string.tag_card_subid) to getString(R.string.insert_tag_card_subid),
getString(R.string.tag_contact_name) to getString(R.string.insert_tag_contact_name), getString(R.string.tag_contact_name) to getString(R.string.insert_tag_contact_name),
getString(R.string.tag_phone_area) to getString(R.string.insert_tag_phone_area),
) )
) )
CALL_TAG_MAP.clear() CALL_TAG_MAP.clear()
@ -428,6 +429,7 @@ class App : Application(), CactusCallback, Configuration.Provider by Core {
getString(R.string.tag_card_subid) to getString(R.string.insert_tag_card_subid), getString(R.string.tag_card_subid) to getString(R.string.insert_tag_card_subid),
getString(R.string.tag_call_type) to getString(R.string.insert_tag_call_type), getString(R.string.tag_call_type) to getString(R.string.insert_tag_call_type),
getString(R.string.tag_contact_name) to getString(R.string.insert_tag_contact_name), getString(R.string.tag_contact_name) to getString(R.string.insert_tag_contact_name),
getString(R.string.tag_phone_area) to getString(R.string.insert_tag_phone_area),
) )
) )
APP_TAG_MAP.clear() APP_TAG_MAP.clear()

View File

@ -131,6 +131,7 @@ data class MsgInfo(
.replaceAppNameTag(from, encoderName) .replaceAppNameTag(from, encoderName)
.replaceLocationTag(encoderName) .replaceLocationTag(encoderName)
.replaceContactNameTag(encoderName) .replaceContactNameTag(encoderName)
.replacePhoneAreaTag(encoderName)
.regexReplace(regexReplace) .regexReplace(regexReplace)
.trim() .trim()
} }
@ -201,6 +202,19 @@ data class MsgInfo(
return this.replaceTag(getString(R.string.tag_contact_name), contactName) return this.replaceTag(getString(R.string.tag_contact_name), contactName)
} }
//替换{{PHONE_AREA}}标签
private fun String.replacePhoneAreaTag(encoderName: String = ""): String {
if (TextUtils.isEmpty(this)) return this
if (this.indexOf(getString(R.string.tag_phone_area)) == -1) return this
var phoneArea = PhoneUtils.getPhoneArea(from)
when (encoderName) {
"Gson" -> phoneArea = toJsonStr(phoneArea)
"URLEncoder" -> phoneArea = URLEncoder.encode(phoneArea, "UTF-8")
}
return this.replaceTag(getString(R.string.tag_phone_area), phoneArea)
}
//替换{{APP名称}}标签 //替换{{APP名称}}标签
private fun String.replaceAppNameTag(packageName: String, encoderName: String = ""): String { private fun String.replaceAppNameTag(packageName: String, encoderName: String = ""): String {
if (TextUtils.isEmpty(this)) return this if (TextUtils.isEmpty(this)) return this

View File

@ -29,6 +29,13 @@ import com.xuexiang.xutil.XUtil
import com.xuexiang.xutil.app.IntentUtils import com.xuexiang.xutil.app.IntentUtils
import com.xuexiang.xutil.data.DateUtils import com.xuexiang.xutil.data.DateUtils
import com.xuexiang.xutil.resource.ResUtils.getString import com.xuexiang.xutil.resource.ResUtils.getString
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import okhttp3.OkHttpClient
import okhttp3.Request
import org.json.JSONObject
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Locale import java.util.Locale
import kotlin.math.min import kotlin.math.min
@ -397,6 +404,41 @@ class PhoneUtils private constructor() {
return contactInfoList return contactInfoList
} }
// 获取号码归属地
fun getPhoneArea(phoneNumber: String): String {
val client = OkHttpClient()
val url = "https://cx.shouji.360.cn/phonearea.php?number=$phoneNumber"
val request = Request.Builder().url(url).build()
var result = getString(R.string.unknown_area) // 默认值
// 使用协程来执行网络请求
runBlocking {
val job = CoroutineScope(Dispatchers.IO).launch {
try {
val response = client.newCall(request).execute()
if (response.isSuccessful) {
val responseData = response.body()?.string()
Log.i(TAG, "getPhoneArea: $responseData")
if (responseData != null) {
val jsonObject = JSONObject(responseData)
val data = jsonObject.getJSONObject("data")
val province = data.getString("province")
val city = data.getString("city")
val sp = data.getString("sp")
result = "$province $city $sp"
}
}
} catch (e: Exception) {
e.printStackTrace()
}
}
job.join() // 等待协程执行完毕
}
return result
}
//获取联系人姓名 //获取联系人姓名
fun getContactByNumber(phoneNumber: String?): MutableList<ContactInfo> { fun getContactByNumber(phoneNumber: String?): MutableList<ContactInfo> {
val contactInfoList = mutableListOf<ContactInfo>() val contactInfoList = mutableListOf<ContactInfo>()

View File

@ -28,6 +28,7 @@
<string name="insert_tag_ip_list">IP List</string> <string name="insert_tag_ip_list">IP List</string>
<string name="insert_tag_net_type">Network Status</string> <string name="insert_tag_net_type">Network Status</string>
<string name="insert_tag_contact_name">Contact Name</string> <string name="insert_tag_contact_name">Contact Name</string>
<string name="insert_tag_phone_area">Phone Area</string>
<string name="type_param_sms">Sms</string> <string name="type_param_sms">Sms</string>
<string name="type_param_call">Call</string> <string name="type_param_call">Call</string>
@ -350,6 +351,7 @@
<string name="battery_setting">Battery Optimization</string> <string name="battery_setting">Battery Optimization</string>
<string name="battery_setting_tips">Set it to manual management, including automatic startup, associated startup, and background running</string> <string name="battery_setting_tips">Set it to manual management, including automatic startup, associated startup, and background running</string>
<string name="unknown_number">Unknown Number</string> <string name="unknown_number">Unknown Number</string>
<string name="unknown_area">Unknown Area</string>
<string name="unsupport">Your phone does not support this setting</string> <string name="unsupport">Your phone does not support this setting</string>
<string name="isIgnored">Set successfully!</string> <string name="isIgnored">Set successfully!</string>
<string name="isIgnored2">Can not directly operate the system power saving optimization Settings</string> <string name="isIgnored2">Can not directly operate the system power saving optimization Settings</string>

View File

@ -28,6 +28,7 @@
<string name="insert_tag_ip_list">IP地址列表</string> <string name="insert_tag_ip_list">IP地址列表</string>
<string name="insert_tag_net_type">网络状态</string> <string name="insert_tag_net_type">网络状态</string>
<string name="insert_tag_contact_name">来源姓名</string> <string name="insert_tag_contact_name">来源姓名</string>
<string name="insert_tag_phone_area">来源归属</string>
<string name="type_param_sms">短信</string> <string name="type_param_sms">短信</string>
<string name="type_param_call">通话</string> <string name="type_param_call">通话</string>
@ -351,6 +352,7 @@
<string name="battery_setting">忽略电池优化设置</string> <string name="battery_setting">忽略电池优化设置</string>
<string name="battery_setting_tips">请设置为手动管理:允许自启动、允许关联启动、允许后台运行</string> <string name="battery_setting_tips">请设置为手动管理:允许自启动、允许关联启动、允许后台运行</string>
<string name="unknown_number">未知号码</string> <string name="unknown_number">未知号码</string>
<string name="unknown_area">未知归属地</string>
<string name="unsupport">您的手机不支持此设置</string> <string name="unsupport">您的手机不支持此设置</string>
<string name="isIgnored">已将省电优化设置为无限制(不优化)</string> <string name="isIgnored">已将省电优化设置为无限制(不优化)</string>
<string name="isIgnored2">本界面无法直接操作系统的省电优化设置</string> <string name="isIgnored2">本界面无法直接操作系统的省电优化设置</string>

View File

@ -28,6 +28,7 @@
<string name="insert_tag_ip_list">IP地址列表</string> <string name="insert_tag_ip_list">IP地址列表</string>
<string name="insert_tag_net_type">網路狀態</string> <string name="insert_tag_net_type">網路狀態</string>
<string name="insert_tag_contact_name">來源姓名</string> <string name="insert_tag_contact_name">來源姓名</string>
<string name="insert_tag_phone_area">来源歸屬</string>
<string name="type_param_sms">簡訊</string> <string name="type_param_sms">簡訊</string>
<string name="type_param_call">通話</string> <string name="type_param_call">通話</string>
@ -345,6 +346,7 @@
<string name="battery_setting">忽略電池優化設置</string> <string name="battery_setting">忽略電池優化設置</string>
<string name="battery_setting_tips">請設置為手動管理:允許自啟動、允許關聯啟動、允許後台運行</string> <string name="battery_setting_tips">請設置為手動管理:允許自啟動、允許關聯啟動、允許後台運行</string>
<string name="unknown_number">未知號碼</string> <string name="unknown_number">未知號碼</string>
<string name="unknown_area">未知歸屬地</string>
<string name="unsupport">您的手機不支持此設置</string> <string name="unsupport">您的手機不支持此設置</string>
<string name="isIgnored">已將省電優化設置為無限制(不優化)</string> <string name="isIgnored">已將省電優化設置為無限制(不優化)</string>
<string name="isIgnored2">本界面無法直接操作系統的省電優化設置</string> <string name="isIgnored2">本界面無法直接操作系統的省電優化設置</string>

View File

@ -27,6 +27,7 @@
<string name="tag_ip_list" translatable="false">{{IP_LIST}}</string> <string name="tag_ip_list" translatable="false">{{IP_LIST}}</string>
<string name="tag_net_type" translatable="false">{{NET_TYPE}}</string> <string name="tag_net_type" translatable="false">{{NET_TYPE}}</string>
<string name="tag_contact_name" translatable="false">{{CONTACT_NAME}}</string> <string name="tag_contact_name" translatable="false">{{CONTACT_NAME}}</string>
<string name="tag_phone_area" translatable="false">{{PHONE_AREA}}</string>
<string name="insert_tag_from">来源号码</string> <string name="insert_tag_from">来源号码</string>
<string name="insert_tag_sms">短信内容</string> <string name="insert_tag_sms">短信内容</string>
@ -56,6 +57,7 @@
<string name="insert_tag_ip_list">IP地址列表</string> <string name="insert_tag_ip_list">IP地址列表</string>
<string name="insert_tag_net_type">网络状态</string> <string name="insert_tag_net_type">网络状态</string>
<string name="insert_tag_contact_name">来源姓名</string> <string name="insert_tag_contact_name">来源姓名</string>
<string name="insert_tag_phone_area">来源归属</string>
<string name="type_param_sms">短信</string> <string name="type_param_sms">短信</string>
<string name="type_param_call">通话</string> <string name="type_param_call">通话</string>
@ -379,6 +381,7 @@
<string name="battery_setting">忽略电池优化设置</string> <string name="battery_setting">忽略电池优化设置</string>
<string name="battery_setting_tips">请设置为手动管理:允许自启动、允许关联启动、允许后台运行</string> <string name="battery_setting_tips">请设置为手动管理:允许自启动、允许关联启动、允许后台运行</string>
<string name="unknown_number">未知号码</string> <string name="unknown_number">未知号码</string>
<string name="unknown_area">未知归属地</string>
<string name="unsupport">您的手机不支持此设置</string> <string name="unsupport">您的手机不支持此设置</string>
<string name="isIgnored">已将省电优化设置为无限制(不优化)</string> <string name="isIgnored">已将省电优化设置为无限制(不优化)</string>
<string name="isIgnored2">本界面无法直接操作系统的省电优化设置</string> <string name="isIgnored2">本界面无法直接操作系统的省电优化设置</string>