如何在真实设备中获取当前SIM卡的手机号码?

时间:2010-02-05 10:46:06

标签: android phone-number

我必须制作一个应用程序,显示单元格中使用的SIM卡的联系号码。为此,我需要使用TelephonyManager类。我可以获得有关其用途的详细信息吗?

6 个答案:

答案 0 :(得分:64)

您可以使用the TelephonyManager执行此操作:

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

documentation for getLine1Number()表示如果号码“不可用”,此方法将返回null,但没有说明该号码何时可用。

您需要通过在您的清单中添加以下内容来提交您的申请permission to make this query

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

(您不应使用TelephonyManager.getDefault()TelephonyManager作为that is a private undocumented API call and may change in future。)

答案 1 :(得分:6)

嗨其实这是我同样的问题,但我没有得到任何东西。现在我从特定的Android真实设备(Android Mobile)获得了手机号码和他的电子邮件ID。现在有90%的人在Android上使用什么应用程序Mobile.And现在我得到Mobile no和email-ID通过这个什么是应用程序API。它非常简单易用,请参阅下面的代码。

            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;

答案 2 :(得分:3)

我必须创建一个应用程序,显示单元格中正在使用的SIM卡的联系人号码。为此,我需要使用Telephony Manager类。我可以获得有关其用法的详细信息吗?

是, 您必须使用Telephony Manager;如果您没有找到联系人号码。用户; 您可以使用相同的Telephony Manager Class获取Sim Card的Sim Serial Number和Imei No. 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 :(得分:1)

嗯,所有这些都可能是暂时的黑客攻击,但是没有办法获得用户的手机号码。这是违反道德政策的。

例如,上面的答案之一建议获取所有帐户并从那里提取。它不再起作用了! 所有这些都只是黑客攻击。

获取用户手机号码的唯一方法是通过运营商。如果您与Aitel,Vodafone等移动运营商有合作关系,您可以通过移动网络互联网获取移动手机请求标题中的用户手机号码。

不确定是否有任何制造商绑定以获得特定权限可能有所帮助 - 没有探索这一领域,但至少没有任何文档记录。

答案 4 :(得分:0)

有时您可以通过USSD请求向您的运营商检索电话号码。 例如,我可以通过拨打* 116#来获取我的电话号码 这可能是在应用程序中完成的,我想,如果 USSD响应可能会被捕获。 当然,这不是我建议在要分发的应用程序中使用的方法,代码甚至可能在运营商之间有所不同。

答案 5 :(得分:-2)

许多人说:

String phoneNumber = TelephonyManager.getDefault().getLine1Number();

可用性严格取决于运营商以及SIM卡上编码的方式。如果由制造SIM的公司或移动运营商本身硬编码。这将返回与设置 - >关于手机相同的内容。