2014-11-03 105 views
2

我想爲Windows Phone開一個笑話應用程序。該應用程序從互聯網上得到笑話,所以我希望它能夠檢查WiFi信號或能夠連接到互聯網。我將如何去創建它?Windows phone 8,檢查wifi是否打開?

+1

ping一個應該/像谷歌的公共dns一樣可用的ip嗎?擁有wifi沒有任何意義。就好像在說:「我有一杯,爲什麼它裏面沒有啤酒?」 – 2014-11-03 21:23:19

回答

2

在WP8.1運行,您可以查詢大多數的這些東西從NetworkInformation類,像這樣:

// need this namespace 
using Windows.Networking.Connectivity; 

bool is_wifi_connected = false; 
ConnectionProfile current_connection_for_internet = NetworkInformation.GetInternetConnectionProfile(); 
if (current_connection_for_internet.IsWlanConnectionProfile) 
{   
    if (current_connection_for_internet.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess) 
    { 
     is_wifi_connected = true; 
    }   
} 

WP8.0可以查詢大多數的這些東西從NetworkInterfaceList像這樣:

// see is wifi is ON and connected 
using Microsoft.Phone.Net.NetworkInformation; 

bool is_wifi_connected = false; 
if (NetworkInterface.GetIsNetworkAvailable()) 
{ 
    NetworkInterfaceList nif = new NetworkInterfaceList(); 
    foreach(NetworkInterfaceInfo item in nif) 
    { 
     if (item.InterfaceSubtype == NetworkInterfaceSubType.WiFi && item.InterfaceState == ConnectState.Connected) 
     { 
      is_wifi_connected = true; 
     } 
    } 
} 

我們看看它是否可以連接到該網站只是打開一個連接。你可以使用任何你喜歡的網絡連接。當文件完成下載時,只需要使用WebClient和事件處理程序來完成此操作。

using System.Net; 

// check network and is_wifi_connected 
if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable() && is_wifi_connected) 
{ 
    WebClient downloader = new WebClient(); 
    Uri uri = new Uri("http://www.google.com", UriKind.Absolute); 
    downloader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadDone); 
    downloader.DownloadStringAsync(uri); 
} 

void DownloadDone(object sender, DownloadStringCompletedEventArgs e) 
{ 
    if (e.Result == null || e.Error != null) 
    { 
     MessageBox.Show("There was an error downloading the site."); 
    } 
    else 
    { 
     // your html file or what not is stored here 
     string content = e.Result; 
    } 
} 
+0

感謝您的回覆,它說「無法找到NetworkInterfaceList」...,我如何使這個工作在Windows 8.1上? – Hunt3R 2014-11-04 20:03:08

+0

@ Hunt3R你的問題被標記爲Windows Phone 8.0,我給你提供瞭解決方案。你說你需要它的Windows 8.1?你不是說Windows Phone 8.1嗎?即使你說我需要Windows Phone 8.1,它仍然不清楚。重新標記您的問題或明確聲明您正在使用Windows Phone 8.1(運行時)或Windows Phone 8.1(Silverlight) - 它們是不同的東西。 – 2014-11-04 20:22:25

+0

對於windows phone 8.1,我得到一個錯誤sayung「NetworkInterfaceList無法找到」。那是問題和另一個問題是我怎麼能在Windows 8.1中做同樣的事情? – Hunt3R 2014-11-04 20:37:58