2

我可以使用以下代码段获取运营商名称:

TelephonyManager telephonyManager = ((TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE));
String operatorName = telephonyManager.getNetworkOperatorName();

它工作得很好。

我还可以使用以下代码段获取来电号码:

private final PhoneStateListener phoneStateListener = new PhoneStateListener() {

    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        String callState = "UNKNOWN";
        switch (state) {
            case TelephonyManager.CALL_STATE_RINGING:
        }
    }
}

我想找出来电号码的运营商名称/服务提供商名称。我怎样才能做到这一点?
是否可以获取传入号码的位置,例如国家/地区?

4

3 回答 3

3

使用 Android API 也无法获取任何手机号码的运营商名称。至少不是那么容易(我认为你可能会陷入一些与隐私相关的问题)。

阅读本文了解更多信息:

http://sms411.net/2006/07/finding-out-someones-carrier/

当然,您可以尝试找到原始运营商(使用前缀),但这可能与实际运营商不同......

于 2012-10-01T08:32:04.293 回答
2

无法以编程方式检索主叫方运营商的详细信息。此外,由于号码可携带性,无法从呼叫者的电话号码中检索运营商的名称。但是,您可以从号码的前几位获取国家/地区信息。有关详细信息,请参阅国家呼叫代码列表

于 2012-10-01T08:30:58.490 回答
0

从 API 级别 22 (Andrid 5.1) 开始,此 API 可用。

SubscriptionManager subscriptionManager = (SubscriptionManager)getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);

List<SubscriptionInfo> subscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList();

if (subscriptionInfoList != null && subscriptionInfoList.size() > 0) {
    for (SubscriptionInfo info : subscriptionInfoList) {
        String carrierName = info.getCarrierName().toString();
        String mobileNo = info.getNumber();
        String countyIso = info.getCountryIso();
        int dataRoaming = info.getDataRoaming();
    }
}
于 2016-10-10T08:38:03.030 回答