1. 程式人生 > >Android 程式碼實現國內和國外的區分

Android 程式碼實現國內和國外的區分

     說實話,要Android手機區分國內還是國外的方法有很多種,我現在就說幾種大家都耳熟能詳的方法,比如說,根據地圖的經緯度來區分國內外,還有根據手機上的語言來區分國內外(這個區分方式是有一點牽強的,因為在中國的,也可以切換輸入法,那我怎樣判斷出來呢)等等,現在我們說一下,第二種區分方式,直接上程式碼:

/**
 * 判斷國家是否是國內使用者
 *
 *方法一
 *
 * @return
*/
public static boolean isCN(Context context) {
    TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String countryIso = tm.getSimCountryIso(); boolean isCN = false;//判斷是不是大陸 if (!TextUtils.isEmpty(countryIso)) { countryIso = countryIso.toUpperCase(Locale.US); if (countryIso.contains("CN")) { isCN = true; } } return isCN; } /** * 方法二 */ /** 查詢手機的 MCC+MNC */ private static
String getSimOperator(Context c) { TelephonyManager tm = (TelephonyManager) c.getSystemService(Context.TELEPHONY_SERVICE); try { return tm.getSimOperator(); } catch (Exception e) { } return null; } /** 因為發現像華為Y300,聯想雙卡的手機,會返回 "null" "null,null" 的字串 */ private static boolean isOperatorEmpty(String operator) { if
(operator == null) { return true; } if (operator.equals("") || operator.toLowerCase(Locale.US).contains("null")) { return true; } return false; } /** 判斷是否是國內的 SIM 卡,優先判斷註冊時的mcc */ public static boolean isChinaSimCard(Context c) { String mcc = getSimOperator(c); if (isOperatorEmpty(mcc)) { return false; } else { return mcc.startsWith("460"); } }