私のアプリでは、携帯電話番号をインポートしたいと考えています。電話の連絡先が ContactsContract API によってインポートされることは知っていますが、電話の連絡先の詳細には存在しない、明らかな自分の携帯電話番号をインポートするよう求めています。
2 に答える
TelephonyManager tMgr
=(TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
mPhoneNumber = tMgr.getLine1Number();
ただし、確実に取得できるわけではないことに注意してください(NULLを確認してください)。
ハンドセット番号は、テレフォニー API を通じて一般的に利用できなくなりました。設定 -> 電話について -> ステータスで正しい電話番号を確認できる場合は、はい、取得できます。しかし、そうでなければ、いいえ。Android 2.3、4、4.1、および 4.2 を実行している電話がいくつかありますが、SIM カードに関連付けられた電話番号が表示されません。
電話番号を持っていないことは大きな頭痛の種ではありません。私はしばらくの間、SMS アプリケーションに取り組んできましたが、数か月前に、ハンドセット番号を知る必要はまったくないという結論に達しました。
正当な理由でハンドセット番号が必要な場合は、連絡先プロバイダーを使用して、デバイスの連絡先カードにアクセスできます。このカードには、1 つ以上の携帯電話番号が含まれている場合があります (またはまったくない場合もあります)。私の提案は、このルートを使用して利用可能な番号を取得し、ユーザーにハンドセット番号を選択するように依頼し、「上記のいずれでもない」場合は番号を入力する機会を与えることです。
その番号を確認したい場合は、ハンドセットからそれ自体にテキスト メッセージを送信するか、テキスト メッセージ サービスを使用してハンドセットにメッセージを送信できます (Web サイトでアカウントを作成するときに電子メール アドレスを確認する必要があるようなものです)。