开发者社区> 奥特曼超人> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

android 获取本机号码需要root吗?

简介: 首先要明白,有的手机是获取不到自身的手机号的,  查了些资料,有以下两种方式可以获取到:     1. 通过对方给你发短信,打电话获取本机号码;      2. 还有一个就是通过APN来查询,但是这个必须有移动或者联通的服务接口才能查到。
+关注继续查看

首先要明白,有的手机是获取不到自身的手机号的,

 查了些资料,有以下两种方式可以获取到:
     1. 通过对方给你发短信,打电话获取本机号码;
      2. 还有一个就是通过APN来查询,但是这个必须有移动或者联通的服务接口才能查到。 

目前还没有“获得本机号码”的方法,getLine1Number()方法只是显示在GSM电话中SIM卡提供的号码。有些移动商封锁了这个API。


首先我们来明确几个概念: 

SIM卡存储的数据可分为四类:

第一类是固定存放的数据。这类数据在移动电话机被出售之前由SIM卡中心写入,包括国际移动用户识别号(IMSI)、鉴权密钥(KI)、鉴权和加密算法等等。

第二类是暂时存放的有关网络的数据。如位置区域识别码(LAI)、移动用户暂时识别码(TMSI)、禁止接入的公共电话网代码等。

第三类是相关的业务代码,如个人识别码(PIN)、解锁码(PUK)、计费费率等。

第四类是电话号码簿,是手机用户随时输入的电话号码。用户全部资料几乎都存储在SIM卡内,因此SIM卡又称为用户资料识别卡。

 

IMSI是一个唯一的数字, 标识了GSM和UMTS 网络里的唯一一个用户. 它存储 在手机的SIM卡里,它会通过手机发送到网络上. IMSI 与 SIM唯一对应

IMEI也是一串唯一的数字, 标识了 GSM 和 UMTS网络里的唯一一个手机.它通常被打印在手机里电池下面的那一面,拨 *#06# 也能看到它. IMEI 与 设备唯一对应.

1。IMEI不存在于SIM卡中,它是手机本身的串号。 
2。通常我们所说的手机号也不存在于SIM卡中,虽然SIM卡中有一个专门存储SIM卡本身号码的地方,但是此号码是通过手工设定的,而且是可以更改的。   SIM卡的识别通常使用IMSI号,这个对于SIM卡是唯一的。 
3。使用SimGetRecordInfo之类的函数获得SIM卡的IMSI号码能否成功依赖于设备制造商是否实现了此函数,据我所知在DOPOD的机器上是可以获得,但是在联想的机器上却不行,其他机器没有。 
4。获得IMEI以及IMSI可以通过RIL或者TAPI中的LINE操作的函数获得。

 

 

下面给出获取手机本机号码的代码:

 

 TelephonyManager phoneMgr=(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); 

 注: 根据Android的安全机制,在使用TelephonyManager时,必须在AndroidManifest.xml中添加<uses-permission android:name="READ_PHONE_STATE" /> 否则无法获得系统的许可。 

private void loadPhoneStatus() { 

TelephonyManager phoneMgr=(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); 

txtPhoneModel.setText(Build.MODEL); //手机型号

 txtPhoneNumber.setText(phoneMgr.getLine1Number());

//本机电话号码 

txtSdkVersion.setText(Build.VERSION.SDK);//SDK版本号 

txtOsVersion.setText(Build.VERSION.RELEASE);//Firmware/OS 版本号

 } 

 //事实上,Build能向我们提供包括 硬件厂商,硬件编号,序列号等很多信息 调用方法也都同上,很简单。

添加权限:

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

 

注意,手机号码不是所有的都能获取。只是有一部分可以拿到。

这个是由于移动运营商没有把手机号码的数据写入到sim卡中。

这个就像是一个变量,当移动运营商为它赋值了,它自然就会有值。

不赋值自然为空。这就是为什么很多人得不到本机号码的原因。



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android远程桌面助手
很早之前,做过一个《WinCE远程桌面助手》,在没有屏幕或者在调试LCD驱动时,发挥了很大作用,平日开发也是必备。后来还被网友用于处理一些疑难问题,如无法输入开机密码时可通过该工具远程输入,触屏坏了也可远程操作。
2523 0
Android切九妹图片
1.打开sdk/tools/draw9patch 2.拖进去一张图片 3.四周都可以点,左键选择锚点 4.左上为图片拉伸区域,右下为内容固定区域
824 0
Android系统Root原理初探(转)
http://www.imooc.com/learn/126             chkconfig setup                 解压update.zip这个文件,可发现它一般打包了如下这几个文件: 或者没有updates而是system这个目录,不同的原因是我这里在updates里放置的是system.img等镜像文件,这些文件都由源码编译而来。
940 0
android中获取root权限的方法以及原理(转)
一、 概述本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识。二、 Root 的介绍1. Root 的目的可以让我们拥有掌控手机系统的权限,比如删除一些system/app下面的无用软件,更换开关机铃声和动画,拦截状态栏弹出的广告等。
2509 0
android通过代码判断手机是否root
只要/system/bin/su、/system/xbin/su这两个文件中有一个存在,就表明已经具有ROOT权限,如果两个都不存在,则不具有ROOT权限。   // 判断是否具有ROOT权限 public static boolean is_root(){ boo...
1824 0
android Rom 制作
引用:http://luoyefeng.blog.hexun.com/80257984_d.html 关键词:java环境配置 制作工具 update-script编写美化 集成 编译反编译 一. 制作目的: 1. 培养个人兴趣,感受动手动脑的快乐。
1475 0
+关注
奥特曼超人
KARL-Dujinyang-奥特曼超人。作者目前任职于银狐、泡椒游戏公司,曾任职腾为CTO,CSDN技术专家,曾创办过创业go、造梦工厂、米奇云,万能孵化器等,领域涉及逆向安全专家以及全栈工程师,作者目前出书中。
239
文章
7
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载