0

私はAndroidで所有者の連絡先番号を取得しようとしていますが、エミュレータでは正常に動作しますが、受話器では機能しません。コードは次のとおりです。

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    String imei = tm.getDeviceId();
    String phoneNumber = tm.getLine1Number();
4

4 に答える 4

3

getLine1Number()が常にすべてのデバイスで SIM カードの番号を返すとは限りません。番号の可用性は、SIM カードのストレージに依存するためです。

番号が SIM カードに保存されていないか利用できない場合、メソッドは空の文字列を返します。

ユーザーの電話番号を取得するには、ユーザーのデバイスからサーバーまたはデバイスに SMS を送信する必要があります (Viber や他のアプリと同様)。そして、良い習慣のために、ユーザーの承認を得てそれが行われていることを確認してください.

于 2013-03-05T14:08:44.217 に答える
1

getSimSerialNumber()は、SimSerialNumberを取得するために呼び出す必要のあるメソッドです。

コードの更新

TelephonyManager tm=(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
String phoneNumber = tm.getLine1Number();
String simSerialNumber = tm.getSimSerialNumber();
于 2013-03-05T14:10:00.497 に答える
1

1) を追加してマニフェスト ファイルを確認します。

2) 実装で android.hardware.telephony.gsm を使用します。

 It should work fine..
于 2013-03-05T14:13:04.320 に答える
1

使用する:

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

Androidmanifest.xmlそして、あなたのファイルに以下の許可を追加してください。

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

編集:

getSimSerialNumber() を使用してみてください

getLine1Number()- このメソッドは、回線 1、つまり電話の電話番号文字列を返しMSISDNますGSM。利用できない場合は null を返します。

この方法は、すべての電話ではなく、一部の携帯電話でのみ機能します。

したがって、sim に応じた操作 (呼び出し以外) を実行する必要がある場合は、 を使用する必要がありますgetSimSerialNumber()。常に一意で有効であり、常に存在します。

文字列 sSimSerial = mTelephonyMgr.getSimSerialNumber();

于 2013-03-05T14:08:34.963 に答える