千家信息网

android安卓APP获取手机设备信息和手机号码的代码示例

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关android 安卓APP获取手机设备信息和手机号码的代码示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。准备条件:一部安卓手机、手机
千家信息网最后更新 2026年11月02日android安卓APP获取手机设备信息和手机号码的代码示例

这篇文章将为大家详细讲解有关android 安卓APP获取手机设备信息和手机号码的代码示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

准备条件:一部安卓手机、手机SIM卡确保插入手机里、eclipse ADT和android-sdk开发环境

第一步:新建一个android工程(JinshanTest),

并需要在工程的AndroidManifest.xml文件中,添加权限

第二步:新建一个工具类PhoneInfo.java

1.package com.jinshan.test;   2.   3.   4.import android.content.Context;   5.import android.telephony.TelephonyManager;   6.   7./**  8. * 读取手机设备信息测试代码  9. * http://www.souapp.com 搜应用网   10. * song2c@163.com  11. * 宋立波  12. */   13.public class PhoneInfo {   14.   15.    private TelephonyManager telephonyManager;   16.    /**  17.     * 国际移动用户识别码  18.     */   19.    private String IMSI;   20.    private Context cxt;   21.    public PhoneInfo(Context context) {   22.        cxt=context;   23.        telephonyManager = (TelephonyManager) context   24.                .getSystemService(Context.TELEPHONY_SERVICE);   25.    }   26.   27.    /**  28.     * 获取电话号码  29.     */   30.    public String getNativePhoneNumber() {   31.        String NativePhoneNumber=null;   32.        NativePhoneNumber=telephonyManager.getLine1Number();   33.        return NativePhoneNumber;   34.    }   35.   36.    /**  37.     * 获取手机服务商信息  38.     */   39.    public String getProvidersName() {   40.        String ProvidersName = "N/A";   41.        try{   42.        IMSI = telephonyManager.getSubscriberId();   43.        // IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动,01是中国联通,03是中国电信。   44.        System.out.println(IMSI);   45.        if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {   46.            ProvidersName = "中国移动";   47.        } else if (IMSI.startsWith("46001")) {   48.            ProvidersName = "中国联通";   49.        } else if (IMSI.startsWith("46003")) {   50.            ProvidersName = "中国电信";   51.        }   52.        }catch(Exception e){   53.            e.printStackTrace();   54.        }   55.        return ProvidersName;   56.    }   57.       58.    public String  getPhoneInfo(){   59.         TelephonyManager tm = (TelephonyManager)cxt.getSystemService(Context.TELEPHONY_SERVICE);   60.            StringBuilder sb = new StringBuilder();   61.   62.            sb.append("\nDeviceId(IMEI) = " + tm.getDeviceId());   63.            sb.append("\nDeviceSoftwareVersion = " + tm.getDeviceSoftwareVersion());   64.            sb.append("\nLine1Number = " + tm.getLine1Number());   65.            sb.append("\nNetworkCountryIso = " + tm.getNetworkCountryIso());   66.            sb.append("\nNetworkOperator = " + tm.getNetworkOperator());   67.            sb.append("\nNetworkOperatorName = " + tm.getNetworkOperatorName());   68.            sb.append("\nNetworkType = " + tm.getNetworkType());   69.            sb.append("\nPhoneType = " + tm.getPhoneType());   70.            sb.append("\nSimCountryIso = " + tm.getSimCountryIso());   71.            sb.append("\nSimOperator = " + tm.getSimOperator());   72.            sb.append("\nSimOperatorName = " + tm.getSimOperatorName());   73.            sb.append("\nSimSerialNumber = " + tm.getSimSerialNumber());   74.            sb.append("\nSimState = " + tm.getSimState());   75.            sb.append("\nSubscriberId(IMSI) = " + tm.getSubscriberId());   76.            sb.append("\nVoiceMailNumber = " + tm.getVoiceMailNumber());   77.           return  sb.toString();   78.    }   79.}

第三步:在启动的Activity,JinshanTestActivity中添加,调用代码:

1.package com.jinshan.test;   2.   3.import android.app.Activity;   4.import android.os.Bundle;   5.   6.public class JinshanTestActivity extends Activity {   7.    /** Called when the activity is first created. */   8.    @Override   9.    public void onCreate(Bundle savedInstanceState) {   10.        super.onCreate(savedInstanceState);   11.        setContentView(R.layout.main);   12.           13.        PhoneInfo siminfo = new PhoneInfo(JinshanTestActivity.this);   14.        System.out.println("getProvidersName:"+siminfo.getProvidersName());   15.        System.out.println("getNativePhoneNumber:"+siminfo.getNativePhoneNumber());   16.        System.out.println("------------------------");   17.        System.out.println("getPhoneInfo:"+siminfo.getPhoneInfo());   18.    }   19.       20.       21.       22.}

第四步,把手机使用USB线,连接到电脑上,确保是连通性,开始运行工程

最后,我们看LOGCAT日志,结果如下:

------------------------------------------------------------

04-01 16:20:57.105: I/System.out(952): 460003121934674
04-01 16:20:57.105: I/System.out(952): getProvidersName:中国移动
04-01 16:20:57.115: I/System.out(952): getNativePhoneNumber:136XXXXXXX
04-01 16:20:57.115: I/System.out(952): ------------------------
04-01 16:20:57.145: I/System.out(952): getPhoneInfo:
04-01 16:20:57.145: I/System.out(952): DeviceId(IMEI) = 352XXXXXXXX61328
04-01 16:20:57.145: I/System.out(952): DeviceSoftwareVersion = 01
04-01 16:20:57.145: I/System.out(952): Line1Number = 136XXXXXXX
04-01 16:20:57.145: I/System.out(952): NetworkCountryIso = cn
04-01 16:20:57.145: I/System.out(952): NetworkOperator = 46000
04-01 16:20:57.145: I/System.out(952): NetworkOperatorName = 中国移动
04-01 16:20:57.145: I/System.out(952): NetworkType = 2
04-01 16:20:57.145: I/System.out(952): PhoneType = 1
04-01 16:20:57.145: I/System.out(952): SimCountryIso = cn
04-01 16:20:57.145: I/System.out(952): SimOperator = 46000
04-01 16:20:57.145: I/System.out(952): SimOperatorName = CMCC
04-01 16:20:57.145: I/System.out(952): SimSerialNumber = 898xxxxxx90108
04-01 16:20:57.145: I/System.out(952): SimState = 5
04-01 16:20:57.145: I/System.out(952): SubscriberId(IMSI) = 46000xxxxxxxx4674

那么我们来解释一下上面的信息具体代表啥意思。

getNativePhoneNumber 获取的手机号

DeviceId(IMEI)手机 国际移动用户识别码

NetworkOperator 移动运营商编号

NetworkOperatorName 移动运营商名称

SimSerialNumber SimOperator SimCountryIso SimSerialNumber SubscriberId(IMSI) 关于手机SIM卡的一些详细信息

其实代码中没有写 获取System.ANDROID_ID这个操作,因为很多手机设备获取不到andnroid_id

当然了,我们今天主要讲述 光使用这个权限我们可以获得的手机设备信息和手机号

如果想获得WIFI,蓝牙,GPS,读写SDCARD更多的信息,就需要添加其它的权限。

此外,本次测试我拿自己的手机SIM卡测试是可以获取到手机号码的,当然了有些手机号码是获取不到的,这里也给大家罗列了原因,

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

这个是由于移动运营商没有把手机号码的数据写入到sim卡中.SIM卡只有唯一的编号,供网络与设备识别那就是IMSI号码,手机的信号也可以说是通过这个号码在网络中传递的,并不是手机号码。试想,你的SIM丢失后,补办一张新的会换号码吗?是不会的.就是因为在你的手机号码对应的IMSI号 在移动运营商中被修改成新SIM卡的IMSI号码。
  那么手机号为什么有的就能显示呢?
  这个就像是一个变量,当移动运营商为它赋值了,它自然就会有值。不赋值自然为空。
  对于移动的用户,手机号码(MDN)保存在运营商的服务器中,而不是保存在SIM卡里。SIM卡只保留了IMSI和一些验证信息。手机每次入网注册的时候,都会以短信的形式将IMSI及验证信息上传到运营商的服务器,服务器在完成注册动作之后,会以短信的形式将注册的结果下发到手机里。下发的内容会因条件不同而不同。
  如果服务器在下发的短信中,不包含手机的号码,手机是无法取得电话号码。如果短信中包含了号码,手机才会将其缓存,以备他用.此外,对于其他运行商的SIM卡或者UIM卡,MDN有可能保存在UIM卡中。100%能够取得本机号码不太可能。
  移动神州行,联通的卡是可以取到的.动感地带的取不到.别的卡还没有试过.
  能够读取SIM卡号的话应该有前提.那就是SIM卡已经写入了本机号码,不然是无法读取的。

关于"android 安卓APP获取手机设备信息和手机号码的代码示例"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

手机 号码 移动 信息 手机号码 中国 运营商 运营 设备 代码 服务 中国移动 服务器 短信 安卓 就是 工程 手机号 更多 权限 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网的科技 互联网科技开发公司 世界互联网领先科技成果 华中科技大学互联网 小马过河互联网科技 融贸通互联网科技 互联网科技美容 甘肃拓世互联网科技有限公司 卫星互联网科技股票 天速互联网络科技有限公司 消费医药和互联网科技 互联网科技圈年度人物 上海京穆互联网科技有限公司 半导体行业属于互联网高科技类吗 上海乐五互联网科技有限公司 互联网科技手抄报图片 科技信息时代互联网发展 上海互联网科技园景观 东风日产互联网科技公司叫什么 互联网大会出现的黑科技 互联网科技公司的优势 互联网 卓越科技 互联网科技大会案例 互联网科技热点资讯 语蝶互联网科技有限公司 苏州铭阳互联网科技有限公司 乌鲁木齐新华智原互联网科技学校 互联网公司黑科技创始人 上海互联网科技公司ppt 杭州科技互联网公司有哪些
0