From 836eac27a957305985a55eab990c2a226d53d479 Mon Sep 17 00:00:00 2001 From: Antkites Date: Sun, 5 Jan 2025 18:54:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20API=20=E5=85=BC=E5=AE=B9=E6=80=A7?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nrfr/manager/CarrierConfigManager.kt | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/github/nrfr/manager/CarrierConfigManager.kt b/app/src/main/java/com/github/nrfr/manager/CarrierConfigManager.kt index abc33b3..ff7a020 100644 --- a/app/src/main/java/com/github/nrfr/manager/CarrierConfigManager.kt +++ b/app/src/main/java/com/github/nrfr/manager/CarrierConfigManager.kt @@ -1,6 +1,7 @@ package com.github.nrfr.manager import android.content.Context +import android.os.Build import android.os.PersistableBundle import android.telephony.CarrierConfigManager import android.telephony.SubscriptionManager @@ -63,7 +64,24 @@ object CarrierConfigManager { private fun getCarrierNameBySubId(context: Context, subId: Int): String { val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager ?: return "" - return telephonyManager.getNetworkOperatorName(subId) + + return try { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + // Android 10 及以上使用新 API + telephonyManager.getNetworkOperatorName(subId) + } else { + // Android 8-9 使用反射获取运营商名称 + val createForSubscriptionId = TelephonyManager::class.java.getMethod( + "createForSubscriptionId", + Int::class.javaPrimitiveType + ) + val subTelephonyManager = createForSubscriptionId.invoke(telephonyManager, subId) as TelephonyManager + subTelephonyManager.networkOperatorName + } + } catch (e: Exception) { + // 如果获取失败,回退到默认的 TelephonyManager + telephonyManager.networkOperatorName + } } fun setCarrierConfig(subId: Int, countryCode: String?, carrierName: String? = null) { @@ -101,4 +119,4 @@ object CarrierConfigManager { ) carrierConfigLoader.overrideConfig(subId, bundle, true) } -} \ No newline at end of file +}