15

単一の SIM の場合、次のコードが機能します。

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String imei= tm.getDeviceId();

デュアルSIMの場合、次のリンクでコードを試しました:

Android : 電話がデュアル SIM であるかどうかを確認します

しかし、それは私にはうまくいきませんでした。

他に可能な解決策があれば教えてください。

4

12 に答える 12

6

getDeviceId(int slotId)API レベル 23 で追加されたものを使用してみてください。

サブスクリプションの一意のデバイス ID (GSM の IMEI や CDMA 電話の MEID など) を返します。デバイス ID が利用できない場合は null を返します。

許可が必要です:READ_PHONE_STATE

于 2016-03-07T05:58:35.250 に答える
5

各SIMカードのAndroid APIとIMEIを使用して、電話がシングルSIMかデュアルSIMかを確認できます

TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
Log.i("OmSai ", "Single or Dula Sim "+manager.getPhoneCount());
Log.i("OmSai ", "Defualt device ID "+manager.getDeviceId());
Log.i("OmSai ", "Single 1 "+manager.getDeviceId(0));
Log.i("OmSai ", "Single 2 "+manager.getDeviceId(1));
于 2015-11-21T09:50:12.600 に答える
1
TelephonyManager telephony = (TelephonyManager) this.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("getDeviceId", parameter);
        Log.d("SimData", getFirstMethod.toString());
        Object[] obParameter = new Object[1];
        obParameter[0] = 0;
        TelephonyManager manager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
        String first = (String) getFirstMethod.invoke(telephony, obParameter);
        Log.d("SimData", "first :" + first);
        obParameter[0] = 1;
        String second = (String) getFirstMethod.invoke(telephony, obParameter);
        Log.d("SimData", "Second :" + second);

    } catch (Exception e) {
        e.printStackTrace();
    }

これを使用してみてください。これは、Androidロリポップで両方のデバイスIDを取得するのに役立ちます

于 2016-11-14T06:59:47.123 に答える
0

はい、Android は現在、デュアル Sim をサポートしていません。ただし、Java リフレクションを使用すると、考えられるすべての詳細を取得できます。

私はデュアルSIMの詳細を取得するために研究し、次のデバイスで動作します
Samsung Galaxy Neo
Moto E
Micromax A52
Micromax Canvas
Linovo P780
HTC Dreem
Moto G
LG
HUAWEI Y520-U22
LG-P705
Sony ST26i
上記のモデルからデュアル SIM Detials を正常に取得しました

于 2015-03-03T05:33:20.473 に答える
0

このメソッドを使用して、両方の imi を取得できます。ご不便をおかけして申し訳ありません。私は急いでいた。

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();
    }   
}
于 2016-08-04T06:36:39.040 に答える