1. 程式人生 > >Android getPhoneType獲取當前phone型別不準

Android getPhoneType獲取當前phone型別不準

Android開發中,可能需要區分當前的phone是gsm或cdma型別,有時候cdma phone註冊到4G網路時,呼叫[email protected]獲取到的型別為PHONE_TYPE_GSM,其實除了這個方法獲取sim卡型別,還可以根據iccid會mccmnc來區分當前的sim卡型別,甚至可以區分得更詳細(移動、聯通、電信),具體方式如下:

//Only one sim card
private static final int PHONE_TYPE_CMCC = 0;
private static final int PHONE_TYPE_UNICOM = 1;
private static final int PHONE_TYPE_CDMA = 2;

private int getPhoneType() {
    int phoneType = -1;
    TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    String mccMnc = tm.getSimOperator();
    if ("46000".equals(mccMnc) || "46002".equals(mccMnc)
            || "46007".equals(mccMnc) || "46008".equals(mccMnc)
            || "45412".equals(mccMnc)) {
        phoneType = PHONE_TYPE_CMCC;
    } else if ("46001".equals(mccMnc) || "46006".equals(mccMnc)
            || "46009".equals(mccMnc)) {
        phoneType = PHONE_TYPE_UNICOM;
    } else if ("46003".equals(mccMnc) || "46005".equals(mccMnc)
            || "46011".equals(mccMnc) || "45502".equals(mccMnc)
            || "45507".equals(mccMnc)) {
        phoneType = PHONE_TYPE_CDMA;
    }
    return phoneType;
}

這樣可以直接區分當前sim卡所屬的運營商,然後根據運營商區分PHONE_TYPE_GSM(移動、聯通)或PHONE_TYPE_CDMA(電信)型別

相關推薦

Android getPhoneType獲取當前phone型別不準

Android開發中,可能需要區分當前的phone是gsm或cdma型別,有時候cdma phone註冊到4G網路時,呼叫[email protected]獲取到的型別為PHONE_TYPE

Android GPS獲取當前經緯度座標

APP中可能會遇到一種需求,就是將當前所在位置的座標傳到伺服器上,今天我提供三種途徑去獲取經緯度座標資訊,第一種是通過Android API來實現,第二種通過百度地圖API來實現,第三種通過天地圖API來實現。 第一種方法(Android API實現),廢話不多說,上程式碼。 MainAct

android應用 獲取本地指定型別檔案 的兩種最優方法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

android VideoView 獲取當前播放時間、獲取視訊長度。

播放視訊檔案其實並不比播放音訊檔案複雜,主要是使用 VideoView類來實現的。這個類將視訊的顯示和控制集於一身,使得我們僅僅藉助它就可以完成一個簡易的視訊播放器。 最近在做視訊,遇到這麼個需求,播放視訊中途退出時候記錄當前播放的時間,播放視訊,最簡單的就是VideoVi

android UiAutomator獲取當前頁面某類控制元件個數的方法

本人在學習UiAutomator的時候,發現一個問題,就是我需要知道當前班級作業的個數,本來想用getchildCount(),發現原來是按行的,一行不一定有多少個小題,後來就想了一個辦法,selenium2java,裡面有一個findelements()的方法,借鑑了這個

android程式碼獲取當前package的de目錄

獲取de目錄首先要獲取DE_CONTEXT Context deContext = getApplicationContext().createDeviceProtectedStorageContext(); 然後通過DE_CONTEXT獲取de目錄 String sDePath = d

android getLastKnownLocation()獲取當前位置為null解決方法

 用Google map api開發是一件令人糾結的事情 使用 getLastKnownLocation() 總是莫名奇妙的獲取不到值,為null,然後又莫名其妙的好了。除錯了半天也沒用,上網找資料,前篇一律的一個答案 所以以後就讓它自生自滅吧。 LocationManag

Android快速獲取當前Activity類名的三種方法

據說程式猿最討厭的兩件事:一是給程式碼寫詳細的註釋;二是閱讀別人的程式碼沒註釋。在程式猿的世界裡,大部分都是接手的別人的專案,而對於一些專案文件全面,專案程式碼規範,在閱讀程式碼的時候相對輕鬆些,不至於當前是哪個Activity都不知道。But,理想是豐滿的,現

Android 如何獲取當前的時間與星期幾

public class DataString { private static String mYear; private static String mMonth; private static String mDay; priv

Android獲取當前正在顯示的Activity

1.監聽Activity的生命週期在Application的onCreate方法中監聽Activity的生命週期 registerActivityLifecycleCallbacks(new Activ

android後臺獲取當前螢幕截圖(screencap.cpp修改)

    本文基於android6.0。首先找到screencap在Android原始碼中的位置,若不清楚,可以通過在android目錄下通過命令find . -namescreencap.cpp。本文直接給出路徑/android/frameworks/base/cmds/s

Android獲取當前位置的使用步驟

在Android中得到當前位置的步驟 1.在AndroidManifest.xml中宣告許可權 android.permission.ACCESS_FINE_LOCATION(或者android.permission.ACCESS_COARSE_LOCAT

[Android] 程式碼獲取手機系統型別(小米MIUI、華為EMUI、魅族FLYME)

我們都知道,現在Android系統手機各式各樣,包括三星、華為、小米、魅族等等,它們的系統都不是原生的Android系統,都是經過手機廠商修改過的,並且通過刷機可以在不同手機刷各式各樣的系統,在一些應用中需要根據不同的系統做不同的處理,因此我們就需要獲取手機使用的什麼系統,現

[android] viewpager獲取當前view報空指標的解決方法

因為需求,我需要獲得viewpager當前的view 於是我採用以下寫法 View currentView = mViewPager.getChildAt(mViewPager.getCurrentItem()); 然後我拿這個view去做其他的事,但是滑動超過3個vie

Android動態獲取當前手機IP地址

public static String getIPAddress(Context context) {        NetworkInfo info = ((ConnectivityManager) context                .getSystemSer

Android連續獲取當前所連線WiFi及周圍熱點列表資訊的解決方案

基礎知識: Android的wifi資訊獲取先要自學相關基礎知識,下面是相關基礎知識。 獲取系統wifi服務 // 獲取系統wifi服務 WifiManage wm = (WifiManager) getApplicationContext().g

Android獲取當前螢幕的尺寸大小

<supports-screens android:smallScreens="true" android:normalScreens="t

android獲取當前軟件版本號號和版本號名稱

.get 軟件 版本 exceptio ctx ica blog found 版本號 <span style="font-size:18px;">/** * 獲取本地軟件版本號 */ public stati

Android獲取當前可用內存

對象 make gets show ID In 系統 sel 獲得 寫入本地文件 private void getMemo(){ //獲得ActivityManager服務的對象 ActivityManager mActivityMana

資料庫SQL實踐18:獲取當前薪水第二多的員工的emp_no以及其對應的薪水salary,不準使用order by

思想: 題目要求查詢當前薪水(to_date='9999-01-01')排名第二多的員工編號emp_no、薪水salary、last_name以及first_name,不準使用order by。首先通過條件e.emp_no=s.emp_no將兩表內連線相連,然後通過條件to_date='9999