[英]Get IMEI of both sim slots in dual sim android mobile devices
我正在為雙卡手機創建一個應用程序。 應用程序應該能夠檢測用戶通過其進行呼叫的SIM卡。 它可以是撥出或來電。 我試圖使用本教程獲得設備的兩個IMEI。 但它為第二個IMEI號返回null。
任何我如何檢測用戶在撥打或接聽電話時使用的SIM卡。
請建議任何方法來實現這一目標。
要在控制台中查看SIM1類型的狀態:
adb shell dumpsys telephony.registry
要在控制台中查看SIM2類型的狀態:
adb shell dumpsys telephony.registry2
傳入/傳出呼叫時mCallState
更改。 它可以讓您知道哪個SIM卡用於通話
從Java應用程序調用dumpsys
,清單中需要android.permission.DUMP
。 但它在一些新設備上不起作用(它們以“Permission Denial”失敗)。
這可能會給你兩個手機的imei有雙卡。
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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.