我使用TelephonyManager执行此操作,您可以访问下面给出的TelephonyManager方法
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String number = telephonyManager.getLine1Number();
getLine1Number()
的文档说如果数字“不可用”,此方法将返回null,但是没有说明该数字何时可用。
我还通过向您的Manifest添加以下内容来授予应用程序权限以进行此查询:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
该号码始终为空或空...
虽然我也进行了交叉检查,我可以从该号码拨打电话(即插入SIM卡号码)
我已经浏览了大量文档,但没有任何帮助我从SIM获取电话号码以便在我的应用程序中使用..
关心,
Arpit Garg
答案 0 :(得分:-1)
AFAIK,由于运营商的各种限制,TelephonyManager.getLine1Number()不可靠。 有一些基于java反射的黑客攻击,但因设备而异,因此这些黑客攻击有点无用[至少在支持的模型方面]
但是,如果您确实需要,可以找到合法的合法逻辑。通过短信提供商查询所有短信,并获取&#34; To&#34;号。
这个技巧的额外好处:1。如果设备中有多个SIM卡,您可以获得所有行号。
缺点:1。您需要SMS_READ权限[对不起] 2.您将获得设备中使用的所有SIM卡号码。用一些约束逻辑可以最小化这个问题,例如时间框架(仅在今天收到或发送短信)等。从其他人那里听到如何改进此案例将会很有趣。
答案 1 :(得分:-5)
你应该试试这个
TelephonyManager phoneManager = (TelephonyManager)
getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
String phoneNumber = phoneManager.getLine1Number();