MSISDN:是SIM卡数据吗?为什么所有提供的功能(从黑莓和Android)获取MSISDN不可靠?

我有几个关于MSISDN的问题.我明白:

> MSISDN基本上是电话号码
>不是imsI

我需要进一步了解的是:

> MSISDN号码是否烧录(存储在SIM卡中)?如果是,所有提供商都确保SIM卡中有MSISDN信息?如果没有,要澄清,编程代码中没有一个可以获取MSISDN号码?
有些人建议以下面的代码获取MSISDN.但是如果设备中未设置“我的电话号码”,则代码将返回null.另一方面,如果设置了它,它将返回“我的电话号码”.
因此,问题是:“我的电话号码”等于MSISDN?

TelephonyManager.getLine1Number(); – >适用于Android

Phone.getDevicePhoneNumber(真); – >对于黑莓
>作为上面的代码,返回String数据是从设备本身还是从SIM卡中获取的?

解决方法

我有一些洞察你的事情.

> MSISDN可以存储在SIM卡上,但大多数网络提供商(南非的所有提供商)都不会将SIMIS存储在SIM卡上.这有几个原因,最显着的是:

>动态MSISDN分配:首次使用预付卡时,MSISDN有时会被分配.这意味着网络有一个可用的MSISDN池,并且每当一个新的预付费SIM卡在线时分配它们.这意味着,当SIM卡发货时,它们还没有MSISDN,这意味着在发送SIM卡之前无法存储MSISDN.某些网络在一段时间不活动之后会过期MSISDN分配,特别是当它们的可用数量很低时,并将这些数字返回到可用池.
>移动号码可移植性:有些国家允许移动用户保留他们的MSISDN,但是改变网络.这意味着MSISDN将从用于1个网络的SIM卡移动到另一个网络的SIM卡.

因此,用户通常最终将SIM卡上的MSISDN条目设置为空白.用户仍然可以将MSISDN存储在SIM卡上,但这也允许它们存储任意数字,并且不能保证被设置,甚至不是用户实际的电话号码.

2.您询问有关提取存储在SIM卡中的号码的电话.如果号码未设置,您将无法获取,如果用户的号码设置错误,则您将收到不正确的详细信息.

正确的是,这个字符串是从SIM卡中取出的.

检测MSISDN的唯一半可靠的方法是通过WAP / WEB,当移动操作符在头文件中包含MSISDN(您可以做一些webview的欺骗,看看哪些头是通过的) – 但是你只看到这些网络支持它,如果用户在移动数据 – 即如果用户在WiFi上将不起作用.

我可以想到的另一个机制(唯一可以保证的机制)是通过USSD会话,因为你总是从操作符那里得到正确的MSISDN,但是我还没有找到一种方式来编程地打开USSD会话和阅读响应(至少在Android中).我有一个USSD服务,其唯一的输出是MSISDN,但不幸的是,这还没有被证明对我有用.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...