Skip to content

Commit 23acf01

Browse files
committed
新增: {{PHONE_AREA}} 标签用于反查{{FROM}}对应的归属地 #564
1 parent b733fc2 commit 23acf01

File tree

7 files changed

+67
-0
lines changed

7 files changed

+67
-0
lines changed

app/src/main/java/com/idormy/sms/forwarder/App.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,7 @@ class App : Application(), CactusCallback, Configuration.Provider by Core {
417417
getString(R.string.tag_card_slot) to getString(R.string.insert_tag_card_slot),
418418
getString(R.string.tag_card_subid) to getString(R.string.insert_tag_card_subid),
419419
getString(R.string.tag_contact_name) to getString(R.string.insert_tag_contact_name),
420+
getString(R.string.tag_phone_area) to getString(R.string.insert_tag_phone_area),
420421
)
421422
)
422423
CALL_TAG_MAP.clear()
@@ -428,6 +429,7 @@ class App : Application(), CactusCallback, Configuration.Provider by Core {
428429
getString(R.string.tag_card_subid) to getString(R.string.insert_tag_card_subid),
429430
getString(R.string.tag_call_type) to getString(R.string.insert_tag_call_type),
430431
getString(R.string.tag_contact_name) to getString(R.string.insert_tag_contact_name),
432+
getString(R.string.tag_phone_area) to getString(R.string.insert_tag_phone_area),
431433
)
432434
)
433435
APP_TAG_MAP.clear()

app/src/main/java/com/idormy/sms/forwarder/entity/MsgInfo.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ data class MsgInfo(
131131
.replaceAppNameTag(from, encoderName)
132132
.replaceLocationTag(encoderName)
133133
.replaceContactNameTag(encoderName)
134+
.replacePhoneAreaTag(encoderName)
134135
.regexReplace(regexReplace)
135136
.trim()
136137
}
@@ -201,6 +202,19 @@ data class MsgInfo(
201202
return this.replaceTag(getString(R.string.tag_contact_name), contactName)
202203
}
203204

205+
//替换{{PHONE_AREA}}标签
206+
private fun String.replacePhoneAreaTag(encoderName: String = ""): String {
207+
if (TextUtils.isEmpty(this)) return this
208+
if (this.indexOf(getString(R.string.tag_phone_area)) == -1) return this
209+
210+
var phoneArea = PhoneUtils.getPhoneArea(from)
211+
when (encoderName) {
212+
"Gson" -> phoneArea = toJsonStr(phoneArea)
213+
"URLEncoder" -> phoneArea = URLEncoder.encode(phoneArea, "UTF-8")
214+
}
215+
return this.replaceTag(getString(R.string.tag_phone_area), phoneArea)
216+
}
217+
204218
//替换{{APP名称}}标签
205219
private fun String.replaceAppNameTag(packageName: String, encoderName: String = ""): String {
206220
if (TextUtils.isEmpty(this)) return this

app/src/main/java/com/idormy/sms/forwarder/utils/PhoneUtils.kt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ import com.xuexiang.xutil.XUtil
2929
import com.xuexiang.xutil.app.IntentUtils
3030
import com.xuexiang.xutil.data.DateUtils
3131
import com.xuexiang.xutil.resource.ResUtils.getString
32+
import kotlinx.coroutines.CoroutineScope
33+
import kotlinx.coroutines.Dispatchers
34+
import kotlinx.coroutines.launch
35+
import kotlinx.coroutines.runBlocking
36+
import okhttp3.OkHttpClient
37+
import okhttp3.Request
38+
import org.json.JSONObject
3239
import java.text.SimpleDateFormat
3340
import java.util.Locale
3441
import kotlin.math.min
@@ -397,6 +404,41 @@ class PhoneUtils private constructor() {
397404
return contactInfoList
398405
}
399406

407+
// 获取号码归属地
408+
fun getPhoneArea(phoneNumber: String): String {
409+
val client = OkHttpClient()
410+
val url = "https://cx.shouji.360.cn/phonearea.php?number=$phoneNumber"
411+
val request = Request.Builder().url(url).build()
412+
413+
var result = getString(R.string.unknown_area) // 默认值
414+
415+
// 使用协程来执行网络请求
416+
runBlocking {
417+
val job = CoroutineScope(Dispatchers.IO).launch {
418+
try {
419+
val response = client.newCall(request).execute()
420+
if (response.isSuccessful) {
421+
val responseData = response.body()?.string()
422+
Log.i(TAG, "getPhoneArea: $responseData")
423+
if (responseData != null) {
424+
val jsonObject = JSONObject(responseData)
425+
val data = jsonObject.getJSONObject("data")
426+
val province = data.getString("province")
427+
val city = data.getString("city")
428+
val sp = data.getString("sp")
429+
result = "$province $city $sp"
430+
}
431+
}
432+
} catch (e: Exception) {
433+
e.printStackTrace()
434+
}
435+
}
436+
job.join() // 等待协程执行完毕
437+
}
438+
439+
return result
440+
}
441+
400442
//获取联系人姓名
401443
fun getContactByNumber(phoneNumber: String?): MutableList<ContactInfo> {
402444
val contactInfoList = mutableListOf<ContactInfo>()

app/src/main/res/values-en/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
<string name="insert_tag_ip_list">IP List</string>
2929
<string name="insert_tag_net_type">Network Status</string>
3030
<string name="insert_tag_contact_name">Contact Name</string>
31+
<string name="insert_tag_phone_area">Phone Area</string>
3132

3233
<string name="type_param_sms">Sms</string>
3334
<string name="type_param_call">Call</string>
@@ -350,6 +351,7 @@
350351
<string name="battery_setting">Battery Optimization</string>
351352
<string name="battery_setting_tips">Set it to manual management, including automatic startup, associated startup, and background running</string>
352353
<string name="unknown_number">Unknown Number</string>
354+
<string name="unknown_area">Unknown Area</string>
353355
<string name="unsupport">Your phone does not support this setting</string>
354356
<string name="isIgnored">Set successfully!</string>
355357
<string name="isIgnored2">Can not directly operate the system power saving optimization Settings</string>

app/src/main/res/values-zh-rCN/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
<string name="insert_tag_ip_list">IP地址列表</string>
2929
<string name="insert_tag_net_type">网络状态</string>
3030
<string name="insert_tag_contact_name">来源姓名</string>
31+
<string name="insert_tag_phone_area">来源归属</string>
3132

3233
<string name="type_param_sms">短信</string>
3334
<string name="type_param_call">通话</string>
@@ -351,6 +352,7 @@
351352
<string name="battery_setting">忽略电池优化设置</string>
352353
<string name="battery_setting_tips">请设置为手动管理:允许自启动、允许关联启动、允许后台运行</string>
353354
<string name="unknown_number">未知号码</string>
355+
<string name="unknown_area">未知归属地</string>
354356
<string name="unsupport">您的手机不支持此设置</string>
355357
<string name="isIgnored">已将省电优化设置为无限制(不优化)!</string>
356358
<string name="isIgnored2">本界面无法直接操作系统的省电优化设置</string>

app/src/main/res/values-zh-rTW/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
<string name="insert_tag_ip_list">IP地址列表</string>
2929
<string name="insert_tag_net_type">網路狀態</string>
3030
<string name="insert_tag_contact_name">來源姓名</string>
31+
<string name="insert_tag_phone_area">来源歸屬</string>
3132

3233
<string name="type_param_sms">簡訊</string>
3334
<string name="type_param_call">通話</string>
@@ -345,6 +346,7 @@
345346
<string name="battery_setting">忽略電池優化設置</string>
346347
<string name="battery_setting_tips">請設置為手動管理:允許自啟動、允許關聯啟動、允許後台運行</string>
347348
<string name="unknown_number">未知號碼</string>
349+
<string name="unknown_area">未知歸屬地</string>
348350
<string name="unsupport">您的手機不支持此設置</string>
349351
<string name="isIgnored">已將省電優化設置為無限制(不優化)!</string>
350352
<string name="isIgnored2">本界面無法直接操作系統的省電優化設置</string>

app/src/main/res/values/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<string name="tag_ip_list" translatable="false">{{IP_LIST}}</string>
2828
<string name="tag_net_type" translatable="false">{{NET_TYPE}}</string>
2929
<string name="tag_contact_name" translatable="false">{{CONTACT_NAME}}</string>
30+
<string name="tag_phone_area" translatable="false">{{PHONE_AREA}}</string>
3031

3132
<string name="insert_tag_from">来源号码</string>
3233
<string name="insert_tag_sms">短信内容</string>
@@ -56,6 +57,7 @@
5657
<string name="insert_tag_ip_list">IP地址列表</string>
5758
<string name="insert_tag_net_type">网络状态</string>
5859
<string name="insert_tag_contact_name">来源姓名</string>
60+
<string name="insert_tag_phone_area">来源归属</string>
5961

6062
<string name="type_param_sms">短信</string>
6163
<string name="type_param_call">通话</string>
@@ -379,6 +381,7 @@
379381
<string name="battery_setting">忽略电池优化设置</string>
380382
<string name="battery_setting_tips">请设置为手动管理:允许自启动、允许关联启动、允许后台运行</string>
381383
<string name="unknown_number">未知号码</string>
384+
<string name="unknown_area">未知归属地</string>
382385
<string name="unsupport">您的手机不支持此设置</string>
383386
<string name="isIgnored">已将省电优化设置为无限制(不优化)!</string>
384387
<string name="isIgnored2">本界面无法直接操作系统的省电优化设置</string>

0 commit comments

Comments
 (0)