web-dev-qa-db-ja.com

実際のデバイスで現在のSIMカードの携帯電話番号を取得する方法は?

セルで使用されているSIMカードの連絡先を表示しないアプリケーションを作成する必要があります。そのためには、TelephonyManagerクラスを使用する必要があります。使用方法の詳細を入手できますか?

35
Narasimha

TelephonyManager を使用してこれを行うことができます。

_TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String number = tm.getLine1Number();
_

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

マニフェストに以下を追加して、アプリケーションに このクエリを作成する許可 を指定する必要があります。

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

TelephonyManager.getDefault()を使用してTelephonyManagerこれは非公開のプライベートAPI呼び出しであり、将来変更される可能性があります として取得しないでください。)

64
Dave Webb

こんにちは、これは私の同じ質問ですが、何も取得できませんでした。今、特定のAndroid real device(Android Mobile))から携帯電話番号と彼のメールIDを取得しました。 Android Mobile.What's App applicationを使用します。そして、このWhat's app APIを使用してMobile noとemail-IDを取得しています。使用方法は非常に簡単です。

            AccountManager am = AccountManager.get(this);
            Account[] accounts = am.getAccounts();
      for (Account ac : accounts) 
       {
        acname = ac.name;

        if (acname.startsWith("91")) {
            mobile_no = acname;
        }else if(acname.endsWith("@gmail.com")||acname.endsWith("@yahoo.com")||acname.endsWith("@hotmail.com")){
            email = acname;
        }

        // Take your time to look at all available accounts
        Log.i("Accounts : ", "Accounts : " + acname);
    }

このAPIをインポートします

    import Android.accounts.Account;
    import Android.accounts.AccountManager;
6
Amarnath Baitha

セルで使用されているSIMカードの連絡先を表示するアプリケーションを作成する必要があります。そのためには、テレフォニーマネージャークラスを使用する必要があります。使用方法の詳細を入手できますか?

はい、Telephony Managerを使用する必要があります。連絡先が見つからない場合は、ユーザーの; SimカードのSimシリアル番号とImei No. of Android Deviceは、同じテレフォニーマネージャークラスを使用して取得できます...

許可を追加:

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

インポート:

import Android.telephony.TelephonyManager;

以下のコードを使用してください。

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

         // get IMEI
         imei = tm.getDeviceId();

         // get SimSerialNumber
         simSerialNumber = tm.getSimSerialNumber();
3
Yasar Khan

まあ、すべては一時的なハッキングかもしれませんが、ユーザーの携帯電話番号を取得する方法はありません。それは倫理的政策に反しています。

たとえば、上記の回答の1つは、すべてのアカウントを取得してそこから抽出することを提案しています。そして、それはもう機能しません!これらはすべてハッキングのみです。

ユーザーの携帯電話番号を取得する唯一の方法は、オペレーターを通過することです。 Aitel、Vodafoneなどのモバイルオペレーターと提携している場合、モバイルネットワークインターネット経由で接続すると、モバイルハンドセットからリクエストのヘッダーにユーザーのモバイル番号を取得できます。

特定の許可を得るためにメーカーが提携するかどうかはわかりません-この分野については調査していませんが、少なくとも何も文書化されていません。

1
Amit

オペレーターへのUSSDリクエストで電話番号を取得できる場合があります。たとえば、* 116#をダイヤルして電話番号を取得できます。これはおそらくアプリ内で行うことができます。if USSDの応答が何らかの形でキャッチされる可能性があります。オフコースは、配布されるアプリ内で使用することをお勧めする方法ではありません。コードはオペレーターによって異なる場合があります。

0
ziggestardust