2016-12-04 117 views
0

我正在開發一個應用程序,也將離線工作。確定互聯網連接是否可以通過WiFi在android

我的場景是這樣的:
我有兩個WIFI設備在我的手機範圍內。 Device1具有互聯網連接,因爲Device2就像一個WIFI-Hotspot,它只發送我的應用程序將使用的少量數據。

當我連接到Device2時,我開始收集數據並保存在移動SQLite中。當我切換到Device1並開始連接互聯網時,我將通過API調用將數據同步到我的服務器。

這種情況是我有權訪問互聯網時,我應該可以進行該API調用。

我該如何做到這一點?

我經歷了很多文章,我得到的是WiFi設備的連接狀態,而不是互聯網連接。

注:請不要問我嘗試這種代碼:

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);<br/> 
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();<br/> 
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting(); 
+0

嘗試創建一個HTTP請求並執行它。作爲迴應Code,您將獲得有關Internet可用性的確認。 – Vinodh

回答

0

你唯一能做的就是

if(isNetworkAvailable}{ 
    if(isHostAvailable){ 
     //perform your communication 
    } 
} 

//檢查服務器連接狀態

private boolean isHostAvailable() { 
    URL url = new URL("http://stackoverflow.com");// specify the url 
    HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 
    System.out.println(conn.getResponseCode()); 
    if(conn.getResponseCode().equalsIgnoreCase("200")){ 
      return true; 
    } 

    return false; 
} 

//檢查設備連接狀態

private boolean isNetworkAvailable() { 
     ConnectivityManager connectivityManager 
       = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
     return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
    } 

您還需要:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
1

你可以只嘗試建立一個TCP連接到遠程主機:

public boolean hostAvailable(String host, int port) { 
    try (Socket socket = new Socket()) { 
    socket.connect(new InetSocketAddress(host, port), 2000); 
    return true; 
    } catch (IOException e) { 
    // Either we have a timeout or unreachable host or failed DNS lookup 
    return false; 
    } 
} 

,並檢查:

boolean online = hostAvailable("www.your-service.com", 80); 
+0

好的,我會試試....但我期待的是有沒有辦法找到互聯網的地位,而不使用TCP或HTTP連接? –

+0

可能有一個框架可以爲你處理這個問題。但是..這隻會建立一個TCP連接... 你有沒有取得進展? –

+0

雅這是爲我工作...謝謝@Simon .... –

相關問題