问题描述
我有关于的MSISDN几个问题。我明白了:
- MSISDN是基本的电话号码
- 这不是IMSI
我需要知道更多有:
-
燃烧MSISDN号码(存储)的SIM卡?如果是的话,都是供应商确保有MSISDN信息SIM卡?如果是否定的,要予以澄清,无编程code能获取MSISDN号码?
-
有人建议取MSISDN如下code。然而无论是code返回NULL,如果我的电话号码未在设备设置。在周围的其他方法,它会返回我的电话号码,如果它被设置。因此,问题是:我的电话号码等于MSISDN
TelephonyManager.getLine1Number();
- > Android版Phone.getDevicePhoneNumber(真);
- >黑莓 -
由于code以上,返回的字符串数据被取出,从设备本身或从SIM卡?
我有一些洞察到这件事给你。
- 的MSISDN的可以的储存在SIM卡上,但大多数网络提供商(所有供应商南非)不存储的MSISDN的SIM卡上。有几个原因,最著名的是:
- 动态MSISDN分配:prepaid模拟人生有时分配的MSISDN是第一次使用时。这意味着,网络上有可用的MSISDN池和分配他们时,一个新的prepaid SIM联机。这意味着,当SIM卡被运送他们没有一个MSISDN的是,这意味着你不能存储的MSISDN之前出货的SIM卡。某些网络'过期'MSISDN分配一个闲置一段时间后,尤其是当他们的可用数量所剩无几,并返回这些数字可用池。
- 在移动号码携带:有些国家允许移动用户保持他们的MSISDN而改变网络。这意味着该MSISDN将从一个SIM卡为1个网络到SIM是在另一网络移动。
所以用户往往最终与SIM卡是空白的MSISDN条目。用户仍然可以存储的MSISDN上的SIM卡本身,但是这也使他们能够存储任意数量,并且它不能保证被设置或甚至是用户实际的电话号码。
    2。这些电话,你问到获取存储在SIM卡中的号码。如果号码不设置你不会得到它,如果用户有错误的号码设置,那么你将有不正确的信息。
    3。正确的,这个字符串是从SIM卡本身获取的。
只有半可靠的方式,我有检测MSISDN是通过WAP / WEB,当移动运营商包括了MSISDN的标题(你可以做一些web视图挂羊头卖狗肉,看看报头未来通过) - 但是你只看到这些如果网络支持它,并且如果用户是在移动数据 - 即,如果用户在无线它不会工作
。其他的机制我能想到的(唯一的保障机制,我能想到的)是通过USSD会话,因为你总能得到正确的MSISDN从运营商,但我还没有发现的编程方式打开一个USSD方式会话和读取(至少在机器人)的响应。我有一个USSD业务的唯一输出的MSISDN但不幸的是这并没有被证明可用给我呢。
I have several question about MSISDNs. I understand:
- MSISDN is the basically the phone number
- It is not IMSI
What i need to know further are:
Is MSISDN number burnt (stored) in SIM Card? If it is yes, are all providers make sure that there is MSISDN information in SIM Card? If it is no, to be clarified, None of programming code can fetch the MSISDN number?
Some people suggest to fetch MSISDN as below code. But both the code return null if "My Phone Number" is not set in device. On the other way around, it will return the "My Phone Number" if it is set.Thus, the question is: "My Phone Number" equals to MSISDN?
TelephonyManager.getLine1Number();
--> for AndroidPhone.getDevicePhoneNumber(true);
--> for BlackberryAs code above, the return String data is fetched from the device itself or from the SIM Card?
I have some insight into the matter for you.
- The MSISDN can be stored on the SIM card, however most network providers (all providers in South Africa) do not store the MSISDN on the SIM card. There are several reasons for this, the most notable being:
- Dynamic MSISDN allocation: Prepaid SIMs are sometime allocated an MSISDN when they are first used. This means that the network has a pool of available MSISDNs and allocate them whenever a new prepaid SIM comes online. This means that when the SIMs are shipped they do not have an MSISDN yet, which means you can't store an MSISDN prior to shipping the SIMs. Some networks 'expire' MSISDN allocations after a period of inactivity, especially when their available numbers are running low, and return these numbers to the available pool.
- Mobile Number Portability: Some countries allow mobile subscribers to keep their MSISDN but change networks. This means that the MSISDN will be moved from a SIM that is for 1 network to a SIM that is for another network.
So the user often ends up with the MSISDN entry on the SIM being blank. The user can still store the MSISDN on the SIM themselves, but this also allows them to store any arbitrary number, and it is not guaranteed to be set or to even be the subscribers actual phone number.
2. Those calls you asked about fetch the number that is stored in the SIM card. If the number is not set you won't get it, and if the user has the wrong number set then you will have the incorrect details.
3. Correct, this string is fetched from the SIM itself.
The only semi-reliable way I have for detecting MSISDN is via WAP/WEB when the Mobile Operator includes the MSISDN in the headers (you can do some webview trickery to see what headers are coming through) - however you only see these if the network supports it and if the user is on Mobile Data - i.e. It won't work if the user is on WiFi.
The other mechanism I can think of (the only guaranteed mechanism I can think of) is via a USSD session, as you always get the correct MSISDN from the operator, but I haven't found a way of programatically opening a USSD session and reading the response (in Android at least). I have a USSD service whose only output is the MSISDN but unfortunately this hasn't proven usable to me yet.
这篇关于MSISDN:这是一个SIM卡数据?为什么所有的提供的函数(来自黑莓和Android)来获取MSISDN不可靠?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!