2014-01-05 104 views
1

我有一個雙卡手機,我的應用程序顯示SIM卡和操作員的詳細信息。但是(顯然)它檢測並顯示只有SIM1而不是SIM2的詳細信息。有沒有可以訪問SIM2細節的方法?檢測雙卡手機中的當前/主SIM卡

我知道Android默認情況下不與支持雙SIM移動製造商的調整它以這樣一種方式,Android使用的選擇 SIM(SIM1或SIM2,取用戶選擇)作爲主要(用於進行呼叫),另一個SIM是待機的(當收到呼叫時踢)。必須有一種方法來檢測這個主SIM卡。

我對同時獲取兩個SIM細節不感興趣。只需要將用戶選擇的SIM卡的詳細信息作爲撥打電話的主要參數。

任何鏈接/工作示例/建議,任何形式的幫助將不勝感激。

感謝

回答

1

第1步:製作,其中的每Android設備製造商1+雙SIM卡設備的列表。

步驟#2:聯繫這些製造商並詢問他們的問題。

正如你寫道:

我知道Android默認情況下不和的手機制造商的調整,支持雙SIM它

沒有要求任何給定的設備製造商必須調整它與其他任何製造商一樣,並且不要求任何給定的設備製造商必須以應用程序開發人員可見的方式對其進行調整。因此,如果應用程序支持實際可用,獲取所需信息的唯一方法是聯繫製造商。

2

要查看SIM1類型的狀態在控制檯: ADB殼dumpsys telephony.registry

要查看在控制檯SIM2類型的狀態: ADB殼dumpsys telephony.registry2

mCallState上傳入/傳出改變呼叫。它允許讓你知道哪些使用SIM卡呼叫

要查看一些額外的信息: 亞行外殼getprop | grep的GSM

當您從Java的應用程序調用dumpsys,你需要在android.permission.DUMP表現。但它不適用於某些新設備。

在某些手機可以工作,這個代碼知道default sim card

Object tm = getSystemService(Context.TELEPHONY_SERVICE); 
Method method_getDefaultSim;  
int defaultSim = -1; 
try { 
    method_getDefaultSim = tm.getClass().getDeclaredMethod("getDefaultSim"); 
    method_getDefaultSim.setAccessible(true); 
    defaultSim = (Integer) method_getDefaultSim.invoke(tm); 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

Method method_getSmsDefaultSim; 
int smsDefaultSim = -1; 
try { 
    method_getSmsDefaultSim = tm.getClass().getDeclaredMethod("getSmsDefaultSim"); 
    smsDefaultSim = (Integer) method_getSmsDefaultSim.invoke(tm); 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

當使用這種SIM卡總是得到「0」和手機短信「1」。即使選擇了一個SIM卡或'先詢問' –

相關問題