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

Nar*_*mha 35 android phone-number

我必须创建一个应用程序,显示单元格中使用的SIM卡的联系号码.为此,我需要使用TelephonyManager课程.我可以获得它的用法细节吗?

Dav*_*ebb 64

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

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String number = tm.getLine1Number();
Run Code Online (Sandbox Code Playgroud)

如果数字"不可用",则说明此方法的文档getLine1Number()将返回null,但是没有说明该数字何时可能不可用.

您需要通过向Manifest添加以下内容来授予您的应用程序进行此查询权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Run Code Online (Sandbox Code Playgroud)

(你不应该使用TelephonyManager.getDefault()得到TelephonyManager是一个私人无证的API调用,并在将来可能会改变.)

  • 有时,这个号码不会在你的SIM卡上烧掉.您可以通过转到您的设置进行检查,点击关于手机,点击状态项查看电话号码.如果您的号码没有显示,那么您无法在自己的应用程序上获得该号码. (12认同)

Ama*_*tha 6

嗨其实这是我同样的问题,但我没有得到任何东西.现在我从特定的Android真实设备(Android Mobile)获得手机号码和他的电子邮件ID.现在有90%的人在Android Mobile上使用什么应用程序应用程序.现在我得到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);
    }
Run Code Online (Sandbox Code Playgroud)

并导入此API

    import android.accounts.Account;
    import android.accounts.AccountManager;
Run Code Online (Sandbox Code Playgroud)

  • 为什么要将`acname`与`91`进行比较.它只能在印度使用吗? (2认同)