J2ME本身的API是沒有提供這個方法的,但是我們通過CMWAP連接的時候,通過移動的網關來獲取,當然,前提是移動的網關要提供這個功能.
如果網關支持這個功能的話,我們就可以通過伺服器端來獲得手機號碼了,以下代碼可以做為測試,看看你連接的移動網關是不是支持:
public static string GetPhoneNumber(HttpRequest request)
{
string phone = "" ;
NameValueCollection coll = null ;
try
{
coll = request.ServerVariables ;
}
catch {}
try
{
if (phone == "")
{
phone = coll["HTTP_X_UP_CALLING_LINE_ID"].ToString() ;
}
}
catch {}
try
{
if (phone == "")
{
phone = coll["MISC_MSISDN"].ToString() ;
}
}
catch {}
try
{
if (phone == "")
{
phone = coll["x-up-calling-line-id"].ToString() ;
}
}
catch {}
try
{
if (phone == "")
{
phone = coll["HTTP_X_NOKIA_MSISDN"].ToString() ;
}
}
catch {}
try
{
if (phone.Length > 11)
{
phone = phone.Substring(2) ;
}
}
catch(Exception ex)
{
phone = ex.Message ;
}
return phone ;
}
客房端可以寫個簡單的測試程序.
[火星人 ] J2ME獲取移動手機號碼已經有392次圍觀