2014-09-19 81 views
0

我想檢測網絡漫遊,但Windows Phone 8和8.1上沒有Internet連接。我用這個代碼,以確定用戶是否是在漫遊:當沒有Internet連接時檢測網絡漫遊

ConnectionProfile profile = Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile(); 
     if (profile == null) 
      return false; 
     else 
      return profile.GetConnectionCost().Roaming; 

有了這個代碼,很容易找到,如果手機是在當有上網漫遊。但是,如果沒有連接並且ConnectionProfile返回null,則會發生此問題。我搜索了互聯網和堆棧溢出檢測網絡漫遊,但沒有結果。建議使用MNC和MCC,但Windows Phone不提供此類信息或任何更詳細的網絡信息。我沒有找到類似Android telephonyManager.isNetworkRoaming()的函數。

是否有一個函數,API或方法來檢測用戶是否在漫遊中,但是當Internet連接關閉?

回答

0

你可以試試這個,

using Microsoft.Phone.Net.NetworkInformation; 
private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
    sb.Append("Network available: "); 
    sb.AppendLine(DeviceNetworkInformation.IsNetworkAvailable.ToString()); 
    sb.Append("Cellular enabled: "); 
    sb.AppendLine(DeviceNetworkInformation.IsCellularDataEnabled.ToString()); 
    sb.Append("Roaming enabled: "); 
    sb.AppendLine(DeviceNetworkInformation.IsCellularDataRoamingEnabled.ToString()); 
    sb.Append("Wi-Fi enabled: "); 
    sb.AppendLine(DeviceNetworkInformation.IsWiFiEnabled.ToString()); 
    MessageBox.Show(sb.ToString()); 
} 

您也可以發現這很有http://msdn.microsoft.com/library/windows/apps/jj207005%28v=vs.105%29.aspx

+0

這個庫是在我的面前,但它不是我想要的東西。從這我只能知道,如果用戶允許電話連接(WiFi,GSM等),但不通知它是否真的在漫遊。 – 2014-09-19 11:26:12

+0

DeviceNetworkInformation.IsCellularDataRoamingEnabled.ToString()這不起作用?? – 2014-09-19 11:28:16

+0

當你關閉數據漫遊時,這個屬性會讓你失敗。爲了確定它是否在Internet連接時漫遊,我使用您的答案中的鏈接中描述的連接配置文件。目前的問題是確定沒有可用互聯網的漫遊。 – 2014-09-19 12:41:03