12

コードを使用しています

TelephonyManager tMgr =(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
  mPhoneNumber = tMgr.getLine1Number();

アンドロイドでプログラム的に電話を取得する。ただし、これは 1 つの SIM カードでのみ正常に機能します。他のSIMカードを挿入してこのコードをテストすると、null. 私はこれに対する解決策を見つけようとしています。私を助けてください。にもREAD_PHONE_STATE許可を含めましたManifest

SIMカードを一意に識別したい。これを行う他の方法はありますか。私にお知らせください。

4

4 に答える 4

8

SIMのシリアルナンバーはユニークだと思います。これを試すことができます。

TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String getSimSerialNumber = telemamanger.getSimSerialNumber();

問題がある場合はお知らせください。

于 2011-06-21T05:35:40.520 に答える
1

これは既知の問題です。世界中の多くの SIM が null を返します。むしろ IMEI 番号を使用する必要がありますが、それでも null が返される可能性があります。

TelephonyManager.getDeviceId()
于 2011-05-10T10:26:48.643 に答える
1

TelephonyManager.getSubscriberId() を探します。これにより、各 SIM の一意の ID が得られます。

于 2011-05-10T10:58:13.427 に答える
0

API レベルが 22 以上の場合: SubscitionManagerを使用してすべての SIM の詳細にアクセスできます。次のコマンドを使用して、すべての Sim 番号を一覧表示します (デュアル Sim にも適しています)。

List<SubscriptionInfo> list = SubscriptionManager.from(getApplicationContext()).getActiveSubscriptionInfoList();
for(SubscriptionInfo s : list){
   Log.d("SIMMANAGER",s.getNumber());
}

注 : これは、オペレーターが携帯電話番号を SIM カードに保存した場合にのみうまく機能します。それ以外の場合、このメソッドは null を返します。

于 2018-12-24T05:31:03.173 に答える