新增: {{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_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_phone_area) to getString(R.string.insert_tag_phone_area),
)
)
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_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_phone_area) to getString(R.string.insert_tag_phone_area),
)
)
APP_TAG_MAP.clear()

View File

@ -131,6 +131,7 @@ data class MsgInfo(
.replaceAppNameTag(from, encoderName)
.replaceLocationTag(encoderName)
.replaceContactNameTag(encoderName)
.replacePhoneAreaTag(encoderName)
.regexReplace(regexReplace)
.trim()
}
@ -201,6 +202,19 @@ data class MsgInfo(
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名称}}标签
private fun String.replaceAppNameTag(packageName: String, encoderName: String = ""): String {
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.data.DateUtils
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.util.Locale
import kotlin.math.min
@ -397,6 +404,41 @@ class PhoneUtils private constructor() {
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> {
val contactInfoList = mutableListOf<ContactInfo>()

View File

@ -28,6 +28,7 @@
<string name="insert_tag_ip_list">IP List</string>
<string name="insert_tag_net_type">Network Status</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_call">Call</string>
@ -350,6 +351,7 @@
<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="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="isIgnored">Set successfully!</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_net_type">网络状态</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_call">通话</string>
@ -351,6 +352,7 @@
<string name="battery_setting">忽略电池优化设置</string>
<string name="battery_setting_tips">请设置为手动管理:允许自启动、允许关联启动、允许后台运行</string>
<string name="unknown_number">未知号码</string>
<string name="unknown_area">未知归属地</string>
<string name="unsupport">您的手机不支持此设置</string>
<string name="isIgnored">已将省电优化设置为无限制(不优化)</string>
<string name="isIgnored2">本界面无法直接操作系统的省电优化设置</string>

View File

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

View File

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