-1

現在の電話の電話番号を取得しようとしていますが、このコードを使用しました(マニフェストにすでにアクセス許可があります)。

TelephonyManager mTelephonyMgr;    
mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);     

String phoneNumber = mTelephonyMgr.getLine1Number(); 

私はAndroidエミュレーターでこのコードを試しましたが、正常に動作し、番号が表示されます(エミュレーターの電話番号だと思います)。

しかし、私の電話(galaxy s2)でこのコードを試したところ、空の文字列が返されました。

ありがとう

4

2 に答える 2

1

getLine1Number()は、電話番号を返すことが保証されていません。デバイスのSIMカードに番号が保存されている場合にのみ機能します。

Settings -> About -> Status電話番号がそこにあるかどうかを確認することで、それが行われるかどうかを確認できます。そうでない場合、携帯通信会社はSIMカードに番号を保持していません

于 2013-03-18T16:13:49.783 に答える
0

ソース:デバイスの電話番号を読み取るとNULLPointerExceptionがスローされます

インドの一部の事業者では、返されるこの電話番号はSIMカードのMSISDNに保存されており、一部の事業者はこれを入力していません。だからそれは空を返します他のSIMで試してみてください。

ドキュメントgetLine1Number()は、番号が「使用不可」の場合、このメソッドはnullを返すと記載されていますが、番号が使用不可になる可能性がある場合は記載されていません。

于 2013-03-18T16:13:58.397 に答える