千家信息网

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

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章将为大家详细讲解有关android 安卓APP获取手机设备信息和手机号码的代码示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。准备条件:一部安卓手机、手机
千家信息网最后更新 2025年01月18日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安全错误 数据库的锁怎样保障安全 网络安全保卫大队标语 软件开发高级工程师满分多少分 肇庆网络安全宣传活动 方舟手游怎样开一个服务器 常见的服务器的类型 伊宁塔式服务器维保公司 dbca 创建数据库 计算机等级证书网络技术 未来5年服务器的前景怎么样 网络安全法关于行政处罚 网络安全精英选拔赛答案 网络安全检察一般会问什么问题 干软件开发干不下去了 天津大学网络安全协会 天津网络安全竞赛报名 安全生产风险基础数据库 moxa串口服务器配置 服务器控制管理器 软件开发哪里接私活 济南最大的软件开发公司 软件开发项目结算书 计算机网络技术 朱士明 双击已创建access数据库 综合网络技术推广信息推荐 二道江数据库怎么进 安全生产风险基础数据库 广州手机软件开发公司价格 关系的含义在数据库中指的是 金山区品牌软件开发大概费用 密云erp管理软件开发公司
0