mirror of
https://github.com/pppscn/SmsForwarder
synced 2025-08-02 17:07:41 +08:00
新增: {{PHONE_AREA}}
标签用于反查{{FROM}}
对应的归属地 #564
This commit is contained in:
parent
b733fc2d4c
commit
23acf01c61
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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>()
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user