MSISDNについていくつか質問があります。わかります:
私がさらに知る必要があるのは:
MSISDN番号はSIMカードに焼き付けられていますか?はいの場合、すべてのプロバイダーはSIMカードにMSISDN情報があることを確認していますか?いいえの場合、明確にするために、どのプログラミングコードもMSISDN番号をフェッチできませんか?
以下のコードとしてMSISDNをフェッチすることを提案する人もいます。ただし、デバイスに「私の電話番号」が設定されていない場合、両方のコードはnullを返します。逆に、設定されている場合は「私の電話番号」が返されます。したがって、問題は次のとおりです。「私の電話番号」はMSISDNと同じですか?
TelephonyManager.getLine1Number();
-> Androidの場合
Phone.getDevicePhoneNumber(true);
->ブラックベリーの場合
上記のコードのように、返される文字列データはデバイス自体またはSIMカードからフェッチされますか?
私はあなたのためにその問題についていくらかの洞察を持っています。
そのため、ユーザーはSIMのMSISDNエントリが空白になることがよくあります。ユーザーは引き続きMSISDNをSIMに保存できますが、これにより任意の番号を保存することもでき、設定されていることや、加入者の実際の電話番号であることが保証されません。
2. SIMカードに保存されている番号を取得するために、あなたが尋ねた電話。番号が設定されていない場合は取得できません。また、ユーザーの番号が間違っている場合は、詳細が正しくありません。
3.正解です。この文字列はSIM自体から取得されます。
MSISDNを検出するための唯一の半信頼性の高い方法は、モバイルオペレーターがヘッダーにMSISDNを含める場合にWAP/WEBを使用することです(Webビューのトリックを実行して、どのヘッダーが通過しているかを確認できます)。ただし、これらはネットワークの場合にのみ表示されます。それをサポートし、ユーザーがモバイルデータを使用している場合-つまり、ユーザーがWiFiを使用している場合は機能しません。
私が考えることができる他のメカニズム(私が考えることができる唯一の保証されたメカニズム)は、常にオペレーターから正しいMSISDNを取得するため、USSDセッションを介したものですが、プログラムでUSSDセッションを開いて読み取る方法が見つかりませんでした応答(少なくともAndroid)。出力がMSISDNのみのUSSDサービスがありますが、残念ながら、これはまだ使用可能であることが証明されていません。
あなたが質問を投稿してから過去1時間に誰も返信しなかったので、これが私が知っていることです(私はこの分野の専門家ではありませんが、経験があります):
MSISDNにはBIGINTタイプがあることを考慮に入れる必要があります。したがって、出力すると、このように事前に型変換が行われます