手机号码不是所有的都能获取。只是有一部分可以拿到。这个是由于移动运营商没有把手机号码的数据写入到sim卡中.SIM卡只有唯一的编号,供网络与设备识别那就是IMSI号码,手机的信号也可以说是通过这个号码在网络中传递的,并不是手机号码。试想,你的SIM丢失后,补办一张新的会换号码吗?是不会的.就是因为在你的手机号码对应的IMSI号 在移动运营商中被修改成新SIM卡的IMSI号码。
那么手机号为什么有的就能显示呢?
这个就像是一个变量,当移动运营商为它赋值了,它自然就会有值。不赋值自然为空。
对于移动的用户,手机号码(MDN)保存在运营商的服务器中,而不是保存在SIM卡里。SIM卡只保留了IMSI和一些验证信息。手机每次入网注册的时候,都会以短信的形式将IMSI及验证信息上传到运营商的服务器,服务器在完成注册动作之后,会以短信的形式将注册的结果下发到手机里。下发的内容会因条件不同而不同。
如果服务器在下发的短信中,不包含手机的号码,手机是无法取得电话号码。如果短信中包含了号码,手机才会将其缓存,以备他用.此外,对于其他运行商的SIM卡或者UIM卡,MDN有可能保存在UIM卡中。100%能够取得本机号码不太可能。
移动神州行,联通的卡是可以取到的.动感地带的取不到.别的卡还没有试过.
能够读取SIM卡号的话应该有前提.那就是SIM卡已经写入了本机号码,不然是无法读取的。
具体处理代码:(程序在模拟器上无法实现,必须连接手机)
//创建电话管理 TelephonyManager tm = (TelephonyManager) //与手机建立连接 activity.getSystemService(Context.TELEPHONY_SERVICE); //获取手机号码 String phoneId = tm.getLine1Number();
记得在AndroidManifest.xml file中添加
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
获取的手机号有时会加上+86这个信息,所以我们要去掉+86的信息:
/** * 获取用户手机号,自动填充 */ TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); String phoneNumber = ""; phoneNumber = telephonyManager.getLine1Number(); // phoneNumber = "+8613699145593"; if(phoneNumber != null && !phoneNumber.equals("")){ // CLog.d(TAG, "<=== phoneNumber ===>" + phoneNumber); if(phoneNumber.indexOf("+86") != -1){ phoneNumber = phoneNumber.substring(3); } userName.setText(phoneNumber);//自动填充 userName.setSelection(phoneNumber.length());//将光标放最后 }
相关推荐
在Android平台上,获取手机用户绑定的...总之,获取Android手机的手机号码涉及到与`TelephonyManager`的交互,以及可能的短信监听和解析。在处理过程中,要尊重用户隐私,遵守相关规定,并确保方案的稳定性和兼容性。
在Android平台上,获取手机号码归属地是一项常见的需求,特别是在开发涉及通信或用户验证的应用时。本文将详细讲解如何实现这一功能。 首先,我们要明白手机号码的归属地信息通常包括运营商(如中国移动、中国联通...
在Android开发中,获取设备的手机号码和运营商信息是常见的需求,这主要涉及到对设备硬件信息的访问。本文将详细讲解如何在Android中实现这些功能,并提供相关的代码示例。 首先,我们需要理解Android系统的权限...
在Android系统中,获取SIM卡运营商信息相对简单,但直接通过SIM卡获取手机号码的功能却存在一定的限制。这是因为出于隐私保护和安全考虑,Android系统并未开放直接读取用户手机号码的API接口。开发者通常可以通过...
在Android平台上,获取手机的号码和运营商信息是常见的需求,特别是在开发涉及通信功能的应用时。以下是如何在Android中实现这一功能的详细步骤和相关知识点。 首先,为了获取手机号码和运营商信息,我们需要使用`...
在讲解如何获取手机号码之前,我们需要理解Android权限系统以及相关的API。 首先,要获取到用户的手机号码,你的应用程序需要在`AndroidManifest.xml`文件中声明`READ_PHONE_STATE`权限: ```xml ...
Android获取手机本机号码的实现方法 反射TelephoneManager 获取本机号码,注意一下提供的接口有的SIM卡没写是获取不到的,该接口只适配Android5.0以上版本 public String getMsisdn(int slotId) { return ...
总结,获取Android手机的电话号码和短信内容涉及到对系统服务的访问和权限管理。在开发时,必须尊重用户隐私,正确处理权限请求,并考虑不同设备和Android版本的差异。同时,根据具体应用场景,可能还需要考虑到短信...
本文将详细介绍如何在Android 5.0及以上版本判断设备是否为单卡或双卡,并获取每个SIM卡的手机号码。 首先,我们需要了解SIM卡的相关概念。SIM卡(Subscriber Identity Module)是移动通信设备中的身份模块,存储了...
在Android平台上,获取手机短信是一项常见的功能,尤其在开发与短信相关的应用时,如验证码接收、备份或管理短信等。Android系统提供了丰富的API接口供开发者使用,使得我们能够方便地读取、操作甚至监听短信的变化...
在安卓(Android)系统中,开发人员经常需要获取设备的手机号码和运营商信息,以便进行相关的功能实现,比如用户身份验证、服务定制等。本文将深入解析如何通过Android源码来获取这些关键信息。 首先,我们需要理解...
在Android平台上,获取手机硬件信息是一项常见的任务,这对于开发者来说尤其重要,因为它可以帮助他们了解设备的特性,并根据这些信息优化应用程序。以下是一些关键的知识点,涵盖了如何在Android中获取描述中提到的...
在Android开发中,有时我们需要获取用户的手机硬件信息,如手机号码和服务运营商,这些信息对于实现特定功能,如发送短信验证、个性化服务等至关重要。本文将详细介绍如何在Android应用中获取本机手机号及服务运营商...
Android 获取手机信息 Android 操作系统提供了多种方式来获取手机信息,包括获取安装的应用信息、手机可用内存和总内存、手机 CPU 信息等。在本文中,我们将详细介绍如何使用 Java 代码来获取这些信息。 获取安装...
在这个"android手机信息获取程序"项目中,开发者显然是针对新手入门,使用Android Studio作为集成开发环境(IDE)来编写代码,专注于短信的获取功能。以下是对这个项目的详细解读和相关知识点的介绍: 1. **Android...
下面将详细解释如何在Android中获取IMEI号码以及获取手机版本信息的方法。 1. 获取IMEI号码 在Android中,我们可以通过`TelephonyManager`类来获取IMEI号码。首先,需要在AndroidManifest.xml文件中添加以下权限: ...
1. **网络请求**:为了获取号码归属地数据,应用会发起HTTP请求到指定的API服务器。这通常涉及到使用像`HttpURLConnection`或者第三方库如`OkHttp`来发送GET或POST请求,传递手机号码作为参数。 2. **JSON解析**:...
Android 开发中,获取手机相册中的图片路径是一个常见的问题,以下将详细介绍如何在 Android 中打开手机相册获取图片路径。 一、权限申请 在 Android 中,访问外部存储需要申请权限,包括读取和写入外部存储的权限...
本项目就是一个基于Volley框架实现的Android手机号码归属地查询的示例(demo)。Volley是Google推出的一个网络请求库,以其高效、易用的特性深受开发者喜爱。下面我们将详细探讨这个项目中的关键知识点。 首先,...
Android 完美获取手机当前时区,解决时间偏移量和夏令时差问题.从本地时间里扣除这些变量,解决时间偏移量和夏令时差问题.从本地时间里扣除这些变量,