android中获取自己的手机号码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中获取自己的手机号码相关的知识,希望对你有一定的参考价值。

TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
String te1 = tm.getLine1Number();
得不到,tel为空
给下代码,谢谢!

这个方法是从SIM中读取手机号码,但是并不是所有的SIM中都有写手机号码。应该说大部分的都没有。如果你手机设置中的“关于手机”能取到手机号,那么这个方法也肯定取不到。
现在一般通过运营商接口、发送短信等方式获取手机号码追问

现在一般通过运营商接口、发送短信等方式获取手机号码,怎么实现?

追答

发送短信就是随机生成一串数字或者字符串发送到指定号码,并同时将发送的内容同步到服务器,比如发送5678到1234,1234收到短信后是知道谁发的短信的,然后根据短信内容就能跟手机绑定在一起了。

而以前的时候可以通过wap网站获取到用户的号码,但是,后来运营商把这个给封了,要获取到号码只能跟运营商或者其他代理商去谈。

追问

代码,谢谢

追答

第二种方法就是跟运营商或者sp合作,让他们将你的网站加入他们的白名单中,这样用户访问wap网站的话就会把手机号码发送给你。
不谈如何加入白名单,首先你要有一个动态网站,可以就一个接口,用户访问某个url,你返回他的手机号。String mobilenum = request.getHeader("x-up-calling-line-id"); 一般这样就能获取到,如果没有你可以测试下遍历所有的head参数,看看到底在哪存放(各运营商可能不同)。
其次,你的客户端需要使用httpclient之类的技术去访问这个url,获取手机号码,当然前提是你要先把手机的上网方式改成wap。切换APN可以参考http://seya.iteye.com/blog/897576
httpclient可以参考http://ipjmc.iteye.com/blog/1577495

参考技术A 可以获取自己手机号。
添加权限
<uses-permissionandroid:nameuses-permissionandroid:name="android.permission.READ_PHONE_STATE"/ >
TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
String te1 = tm.getLine1Number();//获取手机号码
参考技术B 标准的android是不支持双卡的,双卡的都是各个芯片供应商自己加进去的接口,所以各个平台的手机获取方式不一定一致。但是有规律可言的。比如getLine1Number()是获取卡1的,那么可能就有getLine2Number()就是获取卡2的。。。。。 参考技术C public static String getPhoneNum(Context mContext)
String phoneNum = "";
try
TelephonyManager telephonyManager = (TelephonyManager) mContext
.getSystemService(Context.TELEPHONY_SERVICE);
phoneNum = telephonyManager.getLine1Number();
catch (Exception e)
e.getMessage();

return phoneNum;

以上是关于android中获取自己的手机号码的主要内容,如果未能解决你的问题,请参考以下文章

android怎么获取当前手机号码。双卡双待的手机怎么去处理?

android studio 与手机连接调试

Android快速获取联系人

如何以编程方式从 iOS 设备获取自己的手机号码? [复制]

Android获取手机联系人的姓名和电话

Android 怎么使用 最简单 的方法来获取手机当前的位置(获取手机当前的经,纬度),求详细