亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android:檢查手機是否是雙SIM

Android:檢查手機是否是雙SIM

慕的地6264312 2019-06-15 17:38:54
Android:檢查手機是否是雙SIM在論壇上進行了大量的研究之后,我現在知道在雙SIM手機中無法找到兩個SIM卡的IMSI或SIM序列號(除了與制造商聯系)?,F在我改變了的問題是,我們能發現手機有兩個模擬人生嗎?我相信有情報就能發現。我能想到的幾種方法是:撥打USSD代碼并跟蹤IMEI號碼的日志(我在印度嘗試使用*139#)。)這將為我撥USSD代碼的SIM提供IMEI號碼。(據推測,這款手機遵循Android的規定,有兩個IMEI號碼。)存儲用于SIM的SIM序列號和/或IMSI。在檢測到任何其他IMSI/序列號之后,即使電話沒有重新啟動(即SIM被切換),也可以通過跟蹤某些日志或通過廣播事件處理。通過撥打*06#,您將看到兩個IMEI號碼。順便說一句,得到這兩個數字。(類似于屏幕捕獲和文本圖像解析。)如果有人能想到其他的方法,他們是最受歡迎的。我真的很感激在這方面提供任何幫助。此外,如果任何人有任何關于制造商API或鏈接的任何信息與他們聯系,請與社區的人分享。
查看完整描述

3 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

我有一個帶有Android4.4.4的三星Duos設備,Seetha在接受的答案(即調用getDeviceIdDs)中建議的方法不適合我,因為這個方法不存在。通過調用方法“getDefault(IntslotID)”,我能夠恢復所需的所有信息,如下所示:

public static void samsungTwoSims(Context context) {
    TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

    try{

        Class<?> telephonyClass = Class.forName(telephony.getClass().getName());

        Class<?>[] parameter = new Class[1];
        parameter[0] = int.class;
        Method getFirstMethod = telephonyClass.getMethod("getDefault", parameter);

        Log.d(TAG, getFirstMethod.toString());

        Object[] obParameter = new Object[1];
        obParameter[0] = 0;
        TelephonyManager first = (TelephonyManager) getFirstMethod.invoke(null, obParameter);

        Log.d(TAG, "Device Id: " + first.getDeviceId() + ", device status: " + first.getSimState() + ", operator: " 
        + first.getNetworkOperator() + "/" + first.getNetworkOperatorName());

        obParameter[0] = 1;
        TelephonyManager second = (TelephonyManager) getFirstMethod.invoke(null, obParameter);

        Log.d(TAG, "Device Id: " + second.getDeviceId() + ", device status: " + second.getSimState()+ ", operator: " 
        + second.getNetworkOperator() + "/" + second.getNetworkOperatorName());
    } catch (Exception e) {
        e.printStackTrace();
    }   }

此外,我還重寫了反復測試方法以恢復此信息的代碼,以便它使用一個方法名稱數組,而不是一系列try/catch。例如,要確定是否有兩個活動的Sims,我們可以這樣做:

private static String[] simStatusMethodNames = {"getSimStateGemini", "getSimState"};public static boolean hasTwoActiveSims(Context context) {
    boolean first = false, second = false;

    for (String methodName: simStatusMethodNames) {
        // try with sim 0 first
        try {
            first = getSIMStateBySlot(context, methodName, 0);
            // no exception thrown, means method exists
            second = getSIMStateBySlot(context, methodName, 1);
           return first && second;
        } catch (GeminiMethodNotFoundException e) {
            // method does not exist, nothing to do but test the next
        }
    }
    return false;}

這樣,如果為某個設備建議了一個新的方法名,您可以簡單地將它添加到數組中,并且它應該可以工作。


查看完整回答
反對 回復 2019-06-15
  • 3 回答
  • 0 關注
  • 495 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號