web-dev-qa-db-ja.com

プログラムでデュアルSIMのIMEI番号をandroid=

シングルSIMの場合、次のコードが機能します。

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

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

Android:スマートフォンがデュアルSIMかどうかを確認

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

他に可能な解決策があるかどうか教えてください。

14
NehaC

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));
6
Vijay Shelke

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

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

権限が必要です:READ_PHONE_STATE

6
Dheeraj V.S.
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());
1

はい、次のコードを使用して両方のIMEI番号を取得できます

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String imeiNumber1 = tm.getDeviceId(1); //(API level 23)   
String imeiNumber2 = tm.getDeviceId(2);
1
user7036069
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 Lollipopで両方のデバイスIDを取得するのに役立ちます

1
Akshay Shah

AndroidデバイスのIMEI番号を取得するには、次のコードを試してください:

telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);

    btn_imei.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.O)
        @Override
        public void onClick(View v) {
            if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) 
            {
                ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_CODE);
                return;
            }

            StringBuilder stringBuilder = new StringBuilder();
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                for (int i = 0; i < telephonyManager.getPhoneCount(); i++) {
                    stringBuilder.append(telephonyManager.getImei(i));
                    stringBuilder.append("\n");
                }
            }
            txt_imei.setText(stringBuilder.toString());
        }
    });
0
Vishv Shroff

手順:1> READ_PHONE_STATE権限を有効にする必要があります

<uses-permission Android:name="Android.permission.READ_PHONE_STATE" />

2> Android SDK v23 <=の場合、これによりSIM 1およびSIM 2 IMEIを取得します。

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    Log.e("IMEI---1:", tm.getDeviceId(0) );
    Log.e("IMEI---2:", tm.getDeviceId(1) );
0
abir99

このメソッドを使用して両方の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();
    }   
}
0
user6676551

IMEIは、Android O以上で可能です。

Set<String> deviceIdList = new HashSet<>();
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int phoneCount = telephonyManager.getPhoneCount();
for (int i = 0; i < phoneCount; i++) {
   deviceIdList.add(telephonyManager.getImei(i));
}
0
Brijesh Gupta

私の知る限り、それは不可能です。 Javaリフレクション。使用したデバイスによっては、一部のデバイスでは機能しない場合があります。ただし、これを可能にするメーカー固有のAPIがいくつかある場合があります。

引用 Commonsware

Androidは、少なくともSDKからの複数のSIMをサポートしていません。マルチSIMデバイスを作成したデバイスメーカーは、独自に作成しています。デバイスの製造元に連絡して、SDKアドオンまたは2番目のSIMにアクセスできるものがあるかどうかを確認してください。

0

はいAndroid現在、Dual Simはサポートされていません。しかし、Javaリフレクションを使用することにより、すべての可能な詳細を取得できます。

デュアルSIMの詳細を取得するために調査しましたが、以下のデバイスで機能します
サムスンギャラクシーネオ
モトE
マイクロマックスA52
マイクロマックスキャンバス
Linovo P780
HTC Dreem
モトG
LG
HUAWEI Y520-U22
LG-P705
ソニーST26i
上記のモデルからデュアルSIMデバイスを正常に取得しました

0
user3131373