获取SIM卡本地号码

kaithome 2011-10-14 10:43:25
通过AT指令集好像只可以获取SIM卡的IMSI卡号!~ 那怎么获取到SIM卡的本地号码!~手机又是怎么获取到当前的本地号码的呢
...全文
534 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
91program 2011-10-14
  • 打赏
  • 举报
回复
这个和卡相关

一般 G 网的卡是没有号码可以获取的
但 C 网上好像是有

3G 的不太清楚,没玩过。
QQ515311445 2011-10-14
  • 打赏
  • 举报
回复

/*******************************************************************************************
函数名称: TEL_ReadPhoneBook
描 述: 读取指定位置的电话号码记录
输入参数: 电话号码的索引位置(SIM卡最多只支持250条记录,ME最多只支持200条记录。),
电话号码缓冲区以及姓名缓冲区
输出参数: 电话号码和姓名
返 回: TRUE: 成功 FALSE: 失败
********************************************************************************************/
BOOL CGsmModel::TEL_ReadPhoneBook(UINT index, WCHAR *wzNumber, WCHAR *wzName)
{
char szCmd[MAX_PATH] = {0};
sprintf(szCmd,"AT+CPBR=%u\r\n",index);

if(SendATCmd(szCmd))//取指定的号码
{
char *szBegin = strstr(m_strRespBuf, "CPBR");//移到CPBR
if(!szBegin) return FALSE;

szBegin = strchr(szBegin,'"');//移到号码前的引号
if(!szBegin) return FALSE;

szBegin++;//移到号码处,即移过号码前的引号

char *szEnd = strchr(szBegin,'"');//找到号码后的引号
if(!szEnd) return FALSE;

mbstowcs(wzNumber,szBegin,szEnd-szBegin);//取得电话号码,取到号码后都可以返回TRUE

szBegin = szEnd + 1;//移过号码后的引号

szBegin = strchr(szBegin,'"');//找到姓名编码前的引号
if(!szBegin) return TRUE;

szBegin ++;//移过姓名编码前的引号

szEnd = strchr(szBegin,'"');//找到姓名编码后的引号
if(!szEnd) return TRUE;

char szName[BUFF_SIZE] = {0};
strncpy(szName,szBegin,szEnd-szBegin);//取得姓名
Str_ConvertToUnicode(szName, wzName);
return TRUE;
}
return FALSE;
}

/*******************************************************************************************
函数名称: TEL_SetPhoneBookStorage
描 述: 设置当前的电话簿存储单元
输入参数: 电话簿存储单元名称
"ON" SIM卡(或ME)中的号码(MSISDN)清单(也可以使用+CNUM命令读出该存储器中的信息)
$(AT R97)$ "FD" SIM固定拨号号码电话簿(此功能开启及存储容量取决于SIM卡)
"DC" ME最近拨号号码电话簿(非标准的)
"RC" ME最近接听号码电话簿(非标准的)
"MC" ME最近未接号码电话簿(非标准的)
"MT" ME电话簿和缩位拨号电话簿的合并(非标准的)包括ME和SIM电话簿
(存储容量取决于SIM卡,事实上,EM310不存在ME电话簿)
"EN" 紧急呼叫号码电话簿(此功能开启及存储容量取决于SIM卡)
"BD" 被禁止的拨号号码电话簿(此功能开启及存储容量取决于SIM卡)
"SD" 服务拨号号码电话簿(此功能开启及存储容量取决于SIM卡)
输出参数:
返 回: TRUE: 成功 FALSE: 失败
N O T E : 传入参数不能带双引号,本函数会自动添加双引号
********************************************************************************************/
BOOL CGsmModel::TEL_SetPhoneBookStorage(char *szStorage)
{
char szCmd[MAX_PATH] = {0};
sprintf(szCmd,"AT+CPBS=\"%s\"\r\n",szStorage);
return SendATCmd(szCmd);
}

/*******************************************************************************************
函数名称: TEL_GetPhoneBookStorage
描 述: 取得当前的电话簿存储单元类型
输入参数: 存储电话簿存储单元名称的缓冲区
输出参数: 电话簿存储单元名称
"ON" SIM卡(或ME)中的号码(MSISDN)清单(也可以使用+CNUM命令读出该存储器中的信息)
$(AT R97)$ "FD" SIM固定拨号号码电话簿(此功能开启及存储容量取决于SIM卡)
"DC" ME最近拨号号码电话簿(非标准的)
"RC" ME最近接听号码电话簿(非标准的)
"MC" ME最近未接号码电话簿(非标准的)
"MT" ME电话簿和缩位拨号电话簿的合并(非标准的)包括ME和SIM电话簿
(存储容量取决于SIM卡,事实上,EM310不存在ME电话簿)
"EN" 紧急呼叫号码电话簿(此功能开启及存储容量取决于SIM卡)
"BD" 被禁止的拨号号码电话簿(此功能开启及存储容量取决于SIM卡)
"SD" 服务拨号号码电话簿(此功能开启及存储容量取决于SIM卡)
返 回: TRUE: 成功 FALSE: 失败
N O T E : 缓冲区请先清零,再传入
********************************************************************************************/
BOOL CGsmModel::TEL_GetPhoneBookStorage(char *szStorage)
{//+CPBS: "MT",3,250
if(SendATCmd("AT+CPBS?\r\n"))
{
char *szBegin = strstr(m_strRespBuf, "CPBS");//移到CPBS
if(!szBegin) return FALSE;

szBegin = strchr(szBegin,'"');
if(!szBegin) return FALSE;

szBegin++;//移过引号

char *szEnd = strchr(szBegin,'"');
if(!szEnd) return FALSE;

strncpy(szStorage,szBegin,szEnd-szBegin);
return TRUE;
}
return FALSE;
}

/*******************************************************************************************
函数名称: TEL_GetCnum
描 述: 取得本机号码(MSISDN)。存储容量取决于SIM卡,但每个SIM卡应该只使用一个号码,
所以此外只取第一个本机号码,通过AT+CPBR=?查询到可以记录两条
输入参数: wzNumber:电话号码缓冲区, wzName:姓名缓冲区
输出参数: 电话号码和姓名
返 回: TRUE: 成功 FALSE: 失败
N O T E : 取得本机号命令为AT+CNUM,返回值如下格式:
+CNUM: "004000520087007A004B0054005F007600E8006D","13145939103",129
因为AT+CNUM不支持中文,所以改为AT+CPBR命令查询
********************************************************************************************/
BOOL CGsmModel::TEL_GetCnum(WCHAR *wzNumber, WCHAR *wzName)
{//+CPBR: 1,"13145939103",129,"0054006500730074002000530049004D"
char szStorage[16] = {0};
if(!TEL_GetPhoneBookStorage(szStorage))//查询当前的存储单元
return FALSE;

if(strcmp(szStorage,"ON"))//如果不是本机号码的存储单元
{
if(!TEL_SetPhoneBookStorage("ON"))//设置到本机号码的电话簿存储单元
return FALSE;
}

BOOL bRet = TEL_ReadPhoneBook(1,wzNumber,wzName);//取得本机号码

if(strcmp(szStorage,"ON"))//如果不是本机号码的存储单元
{
while(!TEL_SetPhoneBookStorage(szStorage))//恢复为原来的电话簿存储单元
Sleep(0);
}
return bRet;
}


前提条件是本卡有设置过本机号码
可以用手机设置好,或者买卡时让运营商设置好,也可以自己写代码设置,代码如下:

/*******************************************************************************************
函数名称: TEL_SetCnum
描 述: 设置本机号码(MSISDN)。存储容量取决于SIM卡,但每个SIM卡应该只使用一个号码,
所以此外只存储一个本机号码
输入参数: wzNumber:电话号码, wzName:姓名,如为空则自动设置为"Unknown Name"
输出参数: 无
返 回: TRUE: 成功 FALSE: 失败
********************************************************************************************/
BOOL CGsmModel::TEL_SetCnum(WCHAR *wzNumber, WCHAR *wzName)
{
char szStorage[16] = {0};
if(!TEL_GetPhoneBookStorage(szStorage))//查询当前的存储单元
return FALSE;

if(strcmp(szStorage,"ON"))//如果不是本机号码的存储单元
{
if(!TEL_SetPhoneBookStorage("ON"))//设置到本机号码的电话簿存储单元
return FALSE;
}

BOOL bRet = TEL_ModifyPhoneBook(1,wzNumber,wzName);//设置本机号码

if(strcmp(szStorage,"ON"))//如果不是本机号码的存储单元
{
while(!TEL_SetPhoneBookStorage(szStorage))//恢复为原来的电话簿存储单元
Sleep(0);
}
return bRet;
}
woshi_ziyu 2011-10-14
  • 打赏
  • 举报
回复
没有什么标准的AT指令
woshi_ziyu 2011-10-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 kaithome 的回复:]
通过AT指令集好像只可以获取SIM卡的IMSI卡号!~ 那怎么获取到SIM卡的本地号码!~手机又是怎么获取到当前的本地号码的呢
[/Quote]
用的哪个型号呢
第1章 androi简介 1.1 初识android 1.1.1 历史背景 1.1.2 android特性 1.1.3 android组件结构 1.1.4 android应用程序框架 1.1.5 android的竞争优势 1.1.6 android模拟器 1.2 搭建android开发环境 1.2.1 准备工作 1.2.2 windows系统下的搭建过程 1.2.3 linux系统下的搭建过程 1.3 常见问题汇总 1.4 使用本书的配套实例 1.5 小结 第2章 android开发必备 2.1 android体系结构 2.1.1 各种库和android运行环境 2.1.2 应用程序框架 2.1.3 操作系统层 2.1.4 应用程序 2.2 android应用程序组成 2.2.1 activity 2.2.2 intent和intent filter 2.2.3 service介绍 2.2.4 broadcastintentreceiver 2.2.5 contentprovider 2.3 android应用项目文件组成 2.3.1 androidmanifest.xml文件 2.3.2 src目录 2.3.3 常量的定义文件 2.4 程序生命周期 2.4.1 android周期 2.4.2 android进程 2.5 activity的生命周期 2.5.1 activity状态 2.5.2 剖析activity 2.6 android进程和线程 2.6.1 进程 2.6.2 线程 2.6.3 远程调用(remote procedure calls) 2.7 intent消息传递 2.8 intent广播事件 2.8.1 广播事件 2.8.2 使用broadcast receiver监听广播 2.8.3 android本地广播 2.9 小结 第3章 设备界面演练 3.1 文字标签处理 3.2 改变屏幕窗口元素的背景颜色 3.3 改变textview的文字颜色 3.4 实现textview文字的替换 3.5 获取手机分辨率 3.6 样式修饰处理 3.7 按钮事件响应 3.8 页面间的转换 3.9 activity调用 3.10 多个activity间的数据传递 3.11 将数据返回到前一个activity 3.12 对话框交互处理 3.13 文字颜色置换 3.14 文字字体设置 3.15 拖动相片特效 3.16 简易计算器 3.17 about信息 3.18 加载中的程序 3.19 选择对话框 3.20 主题变换 3.21 小结 第4章 andfosd控件演练 4.1 实现文本处理 4.2 将背景图片作为按钮 4.3 用toast实现提示 4.4 用checkbox实现一个简单的物品清单 4.5 实现同意条款效果 4.6 radiogroup选择 4.7 imageview相框 4.8 spinner选择处理 4.9 gallery相簿 4.10 用.iava.io.file实现文件搜索 4.11 置换imagebutton按钮 4.12 实现autocompletetextview输入提示 4.13 实现analogclock时钟 4.14 时间选择 4.15 progressbar和handler进度条 4.16 动态排版处理 4.17 listactivity布局- 4.17.1 listactivity介绍 4.17.2 使用listactivity 4.18 matrix实现图片缩放 4.19 bitmap和matrix图片旋转 4.20 加载手机存储卡中的文件 4.21 小结 第5章 交互式服务 5.1 textview的花样 5.2 拨打电话程序 5.3 短信发送程序 5.4 e-mail发送程序 5.5 实现手机震动效果 5.6 图文提醒效果 5.7 状态栏提醒 5.8 检索通讯录 5.8.1 实现原理 5.8.2 contentprovider介绍 5.8.3 具体实现 5.9 文件管理 5.10 还原手机桌面 5.11 置换背景图 5.12 修改和删除文件 5.12.1 实现原理 5.12.2 java i/o基本类库介绍 5.12.3 具体实现 5.13 获取file和cache的路径 5.14 wi-fi服务 5.14.1 wi-fi简介 5.14.2 实现原理 5.14.3 具体实现 5.15 获取sim卡内信息 5.15.1 sim卡简介 5.15.2 实现原理 5.15.3 具体实现 5.16 触屏拨号 5.17 获取正在运行的程序 5.18 变换屏幕的方向 5.19 获取设备信息 5.20 小结 第6章 手机自动服务 6.1 实现短信提醒 6.2 剩余电量提醒 6.3 短信群发 6.4 短信e
1.整体项目采用MVC框架,是对android知识点的综合应用,用到的技术有 (activity,service,broadcast,content provider,Notification , 数据库,自定义title,自定义控件,自定义toast,widget,aidl进程间通讯, javascript和java的互相调用等) 2.介绍了listview和gridview等控件的优化技巧,提升软件的效率 3.穿插介绍了企业开发中的bug管理,mantis的使用,自动化测试robotium的使用 ,log管理. 软件的打包,混淆,反编译和三方广告的加入等技巧。 该项目主要涵盖以下几大功能: 手机防盗: 根据预设参数, 判断手机是否被盗,根据自定义协议发送手机中sim卡的信息和手机的位置信息给安全号码. 可以自定义特殊号码,拨号快速进入手机防盗功能,可远程通过短信指令,给手机设置锁屏密码, 远程锁定手机屏幕, 远程格式化手机sd卡,恢复出厂设置,极大的保护用户的隐私安全,通过aidl注册admin设备,一般用户无法卸载该程序。 通讯卫士: 来电号码归属地显示,来电归属地位置的调整,来电黑名单/短信黑名单管理. 电话短信备份和还原. 保护手机的数据和通讯安全。 软件管理: 系统软件和本地软件,可以显示软件的详细信息,启动,删除应用程序.连接获取服务器上软件的评分信息等功能。程序锁可以指定要保护的程序, 用户进入要保护的程序之前必须输入密码。 任务管理: 显示当前系统运行的进程信息 显示系统内存信息, 可以杀死某个进程,批量杀死进程,通过桌面widget 实时展现用户当前的手机内存状态。 上网管理: 显示出每个程序wifi和3g/2g 访问的上传和下载的流量,帮助用户了解程序产生的流量信息. 漫游管理. 当检查到手机处于漫游状态时会提示用户。 手机杀毒:从服务器下载最新的病毒库, 根据程序的包名和程序的数字签名识别病毒,提示用户并查杀. 恶意软件,吸费木马无处可藏。 系统优化: 清理手机缓存,提高手机性能,优化电池管理 高级工具: 自动ip拨号,手机号码归属地查询,更改归属地位置,常用号码查询。 安全专题: 1、通过0权限上传下载数据,重启手机等案例,深入讲解android沙箱,安全机制和权限模型。 2、通过分析恶意代码的提权漏洞,讲解如何维护系统的安全。 3、通过linux键盘驱动案例的讲解,分析盗号木马的原理及其实现方式。 4、恶意软件发展速度的确一日千里,安全软件也要与时俱进,世面上的手机病毒已经具有了可以杀掉安全软件的功能, 通过多进程互相守护案例,讲述如何实现安全软件的自我保护。
|--Activity不允许横竖屏切换 |--Activity常用小技巧 |--Activity按返回直接回到桌面 |--aidl之结合反射获取应用缓存大小等空间占用 |--aidl调用系统service未公开的方法挂电话 |--aidl调用系统未公开的方法代码示例2 |--android dp和px之间转换 |--android INSTALL_PARSE_FAILED_MANIFEST_MALFORMED |--android root下禁用组件 |--android 判断网络状态 |--android 对话框样式 |--android 开机启动 |--android 挪动dialog的位置 |--android 控制对话框位置 |--android 根据uri获取路径 |--android 模拟器错误 |--android 横竖屏切换 |--android 获取mac地址 |--android 获取sd卡状态 |--android 设置apn |--android 调节屏幕亮度 |--android 资源uri |--android 还原短信 |--android 重启 |--android中anim文件特效 |--app信息menifest获取(如版本号) |--AsyncQueryHandler之异步查询Cursor处理 |--AutoCompleteTextView自动提示的用法 |--BitMap、Drawable、inputStream及byte[] 互转 |--ContentProvider内容提供者定义 |--DatePicker日期控件 |--desktop |--Dialog之位置的挪动与控制 |--Dialog实现无标提栏及自定义风格 |--Dialog风格Activity的作法 |--ExpandableListView(下拉伸缩ListView) |--GridView表格布局的用法 |--httpclient超时 |--info体系 |--Intent启动应用apk安装 |--Intent常用功能 |--IO将输入流转成字节 |--Json读js资源文件 |--layout布局样式之style配置 |--listview 页面 图片加文字 |--ListView之CursorAdapter异步查询框架之短信 |--ListView之动态添加子view |--ListView优化之分页加载 |--ListView优化之动态加载 |--ListView优化之控制getView实现复杂显示 |--ListView优化之标准写法 |--listview老虎机 界面设计 水果机 |--listview页面跳转 数据库交互 事务 dao biz 层 |--Log的收集 |--Manager下的info |--Manager之ActivityManager进程管理 |--Manager之LocationManager |--Manager之PackageManager |--Menu之不同模式下显示不同菜单 |--openGL-ES上绘制文字 |--openGL-ES纹理贴图 |--openGL-ES获取帧率 |--openGL-ES雾化 |--PopupWindow的使用 |--PopupWindow的返回健关闭 |--RadioGroup的用法(里面的成员可以是任何view) |--SD卡之计算剩余空间 |--Spinner下拉菜单组件 |--SplashActivity |--StringUtils工具类的常用方法 |--TabHost一个界面显示多Activity |--TextView单行跑马灯效果 |--TextView虚拟获得焦点 |--uploadServlet |--uri之表示资源resource |--ViewPage的使用 |--view中的tag用法之存储对象 |--view常用属性 |--xml常用属性 |--xml文件的pull解析与序列化写入 |--xml的封装序列化 |--任务循环之只在Activity显示时执行 |--修改文件的最后修改时间 |--偏好设置(回显) |--内存优化之各种方法 |--内容提供者之短信的序列化对象读写 |--内容提供者之短信的获取与写入 |--内容提供者之联系人读写与批量操作 |--内容提供者之获取通话记录 |--内容提供者的定义 |--写入联系人信息 |--利用FinalHttp实现多线程断点续传 |--加密之MD5 |--动画Animation详解 |--动画之view左右抖动 |--动画之移动动画 |--动画之组合动画 |--动画之缩放动画ScaleAnimation |--反序列化对象 |--发送短信 读天气 调音量 |--回调函数的定义 |--图片之BitMap、Drawable、inputStream及byte[] 互转 |--图片之保存图片至SD卡 |--图片之删除40%最近没有被使用的 |--图片之的本地缓存至SD卡 |--图片之网络异步下载图片 |--图片之获取SD卡所有及边界可调及压缩和软引用和内存回收 |--图片的LRU算法内存保存和读取 |--图片的缩放处理(防内存溢出) |--多媒体应用设计图 |--多线程下载 |--多线程下载及断点续传 |--多线程之AsyncTask的用法 |--多线程之线程池ExecutorService |--字体为粗体 |--安卓下的多线程断点上传 |--对话框与进度条结合用法 |--屏幕之Activity全屏 |--屏幕之横竖屏切换 |--屏幕之调节屏幕亮度 |--屏幕相关之Display类获取屏幕尺寸和分辨率 |--屏幕适配之ScrollView |--屏幕适配之像素dp和px之间转换 |--工具类之Log的封装类 |--工具类之不同log打印的封装 |--工具类之开启新的Activity |--布局加载器的获取 |--广播接收者之开机启动 |--广播接收者之获取管理员权限 |--广播接收者代码注册与卸载 |--广播接收者常用广播的获取 |--应用之分享(隐式意图) |--应用之卸载(隐式意图) |--应用之安装(隐式意图) |--应用之完美退出 |--应用之获取名称和图标 |--应用之获得占用内存大小 |--应用之通过包名开启一个应用 |--应用之隐式意图开启设置界面 |--应用启动之检查版本更新及初始化 |--延时任务的工具类 |--异常之UncaughtExceptionHandler全局捕获处理 |--异步任务AsyncTask的用法 |--异步任务的自定义 |--快捷方式增删查 |--手势识别器GestureDetector的用法 |--拍照之调用系统相机并显示及保存 |--拨打电话 |--按健之长按menu事件屏蔽 |--按健监听按返回健回桌面 |--搜索之调用系统Searchable的用法 |--数据库CURD通过execSQL与rawQuery |--数据库SQLiteOpenHelper标准写法 |--数据库复杂多表查询 |--数据库查询之归属地 |--数据库直接CURD |--数据提交无需权限 |--文件之从服务器下载 |--文件之拷贝文件至某个目录 |--文件之指定编码读写文件 |--文件之释放Assets下的文件到应用的File目录 |--文件之随机存储RandomAccessFile |--文件使用时间排序 |--文件复制粘贴 |--文件路径之通过uri获取 |--时间java常用应用 |--时间之handle记时器 |--时间之time的用法得到特定时间的long值 |--时间之之定时任务TimerTask |--时间之倒计时CountDownTimer |--时间之当前时间动态显示 |--时间之自动任务ScheduledExecutorService |--时间之记时器 |--时间日期格式化 |--服务之判断是否处于运行状态 |--服务之定义录音机 |--服务之应用内绑定服务调用方法 |--服务之电话录音 |--服务之看门狗代码示例 |--格式化之DecimalFormat数字格式化 |--桌面快捷方式的添加代码示例 |--桌面控件widget的创建方法 |--模拟发短信 指定号码 短信窃听提示 |--消息机制 mesage looper |--滑动之左右滑动的两种定义 |--电话簿读取联系人信息 |--监听 |--监听之CheckBox是否选中监听 |--监听之EditText内容变化监听 |--监听之GridView条目点击监听 |--监听之ListView条目点击事件监听 |--监听之ListView滑动监听 |--监听之单击监听的两种定义 |--监听之双击监听 |--监听之电话状态监听 |--监听之触摸监听 |--短信之根据id删除及查询短信 |--短信发送小demo |--短信的截取 |--系统之SD卡清理 |--系统之获取所有开机启动应用 |--系统之重启实现 |--系统信息之获取SD卡内存信息 |--系统信息之获取动态内存RAM信息 |--系统信息之获取可用内存 |--系统信息之获得mac地址 |--系统信息之获得手机sim卡序列号 |--缓存优化之几种方案lastModified |--缓存优化之本地缓存优化(超过规定值或SD卡容量不够时) |--网络post提交查询请求 |--网络之HttpClient的get和post用法 |--网络之判断网络状态是否可用 |--网络之设置apn |--网络图片查看器 |--网络图片的下载与缓存 |--网络文件的下载与关联进度条 |--联系人之各种查找 |--联系人读写与批量操作 |--联系人读取 |--自定义shape形状颜色渐变资源 |--自定义Toast |--自定义view的属性 |--自定义下拉刷新ListView |--自定义动画资源 |--自定义常用小控件 |--自定义控件之小技巧 |--自定义控件风格和全局背景 |--自定义组合控件 |--自定义配置文件资源 |--自定义颜色状态选择资源 |--自定义颜色资源 |--获取网页的源码 |--读取外部资源的文件3种方式 |--读取手机内的短信 |--通信之Application实现应用全局通信 |--重启adb |--隐式转换 页面 |--震动效果的实现

19,500

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧