老问题怎么获取本机手机号

十一文 2011-04-21 11:54:59
移动的用白名单


那么电信和联通的了?


访问wap页面
header里面取??
...全文
794 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangxueing 2012-01-09
  • 打赏
  • 举报
回复
从技术层面而言,手机的SIM卡上并不会存储手机号码信息,只会存储IMSI(International Mobile Subscriber Identification Number)。手机号码(MSISDN)都是登记在HLR(Home Location Register)中的,在HLR中会把IMSI和MSISDN关联在一起。
中国移动的SIM卡里只有IMSI号码而没有存储手机号码,在中国移动的HLR中会有一张映射表,专门用于把用户手机SIM卡的IMSI号映射成为用户的手机号码,这就是移动丢卡不丢号的业务也就是缘于此,也是一卡多号的原理。而电信CDMA(原来联通CDMA)的机卡合一的手机卡里会同时存在IMSI和手机号码。
客户端获取:在客户端对移动用户而言只能够获取诸如IMSI、IMEI号等,并不能直接获得手机号。而对电信CDMA机卡合一用户可以获取手机号码。目前能够想到的能够相对可靠地自动获取用户手机号的方法只有通过短信方式。
通过短信方式:让用户上行一条短信,通过短信网关获取用户手机号,从而将用户id与手机号绑定

android获取
TelephonyManager tm = (TelephonyManager)
StartActivity.this.getSystemService(Context.TELEPHONY_SERVICE);
String phoneNo=tm.getLine1Number();
<!-- 添加权限 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
jude_happy 2011-11-25
  • 打赏
  • 举报
回复
读SIM/USIM卡

EFMSISDN (MSISDN)

This EF contains MSISDN(s) related to the subscriber. In addition it contains identifiers of associated network/bearer capabilities and identifiers of extension records at the USIM ADF level. It may also contain an associated alpha tagging.

文件夹 6F40
Bytes Description M/O Length
1 to X Alpha Identifier O X bytes
X+1 Length of BCD number/SSC contents M 1 byte
X+2 TON and NPI M 1 byte
X+3 to X+12 Dialling Number/SSC String M 10 bytes
X+13 Capability/Configuration2 Identifier M 1 byte
X+14 Extension5 Record Identifier M 1 byte
For contents and coding of all data items see the respective data items of EFADN.
If the USIM stores more than one MSISDN number and the ME displays the MSISDN number(s) within the initialisation procedure then the one stored in the first record shall be displayed with priority.
NOTE: The value of X (the number of bytes in the alpha identifier) may be different to the length denoted X in EFADN.
QQ515311445 2011-08-25
  • 打赏
  • 举报
回复

/*******************************************************************************************
函数名称: 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_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_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_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;
}

ysfeagle 2011-08-24
  • 打赏
  • 举报
回复
本机是获取不到的。。只能通过第三方。。
huangi0 2011-05-04
  • 打赏
  • 举报
回复
短信方式不是很好取么
ysfeagle 2011-05-03
  • 打赏
  • 举报
回复
貌似本机获取不到本机的手机号码,只能通过第三方了。比如发短信出去等等。

791

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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