2015-03-13 64 views
-1

我有一個非常簡單的問題:是否有可能知道Android中的活動WiFi連接是否來自3G熱點?檢查WiFi連接是否來自3G熱點

背景:我有一臺沒有3G的平板電腦,通過手機連接到3G wifi熱點(可以是iPhone或Android手機)。在我的應用程序中,我確實希望使用此連接來創建小型Web服務請求,但我希望限制爲非3G連接的連接,但應用程序中的某些功能(如上傳照片等等:數據密集型事物)。

在SO的其他帖子中,我看到來自Android熱點的IP地址始終爲192.168.43.x;這似乎是這種情況。但是,是不是有一些通用的方法來查明wifi連接是否與手機連接?

我試過谷歌的答案,但Android check wifi 3g hotspot programmatically的組合仍然只導致像How to set up a wifi hotspot with your phoneAndroid turn On/Off WiFi HotSpot programmatically這樣的事情,所以沒有太大的幫助。

+0

確實/很難僅根據IP地址來判斷/識別連接類型。 192.168.x.x系列是專用網絡最常用的系列。根據我的經驗,除非手動更改,否則它們幾乎總是來自192.168.x.x系列。所以,國際海事組織,它不能單純依靠IP地址來完成。但仔細研究一下,看看是否出現了問題。 – 2015-03-13 10:06:31

+0

@siddharthLele正如你可以在我的文章中看到的,Android熱點不是192.168.y.x,而是192.168.43.x.考慮到這一點,您可以輕鬆區分家庭網絡和Android熱點,因爲大多數家庭網絡是192.168.0.x,192.168.1.x或192.168.254.x.但我的問題是關於潛在的元數據與wifi信號廣播,所以也可以檢測到iPhone熱點。根據你的評論,答案似乎是'不',這使得問題本身非常狹窄(因爲這是一個是/否的問題)。 – stealthjong 2015-03-13 11:25:10

+0

不可以。我在說的是,僅基於IP地址進行檢測可能會導致誤報。如果它依賴於這樣的話,那麼在我看來,這是不可能的。爲了改寫最後,這可能不是最佳解決方案。更安全的做法可能是更好的選擇。特別是考慮到你需要檢測Android或iPhone熱點。 – 2015-03-13 12:00:17

回答

-1

ü可以用這種方法

public boolean hasConnection() 
{ 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

    //WIFI 
    NetworkInfo wifiNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    if (wifiNetwork != null && wifiNetwork.isConnected()) 
     return true; 

    //MOBILE 
    NetworkInfo mobileNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
    if (mobileNetwork != null && mobileNetwork.isConnected()) 
     return true; 

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
    return activeNetwork != null && activeNetwork.isConnectedOrConnecting(); 
} 

ü需要這一行添加到您的清單

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

只檢查一個移動連接型檢查您的電話internetconnection - 你可以刪除wifi部分

相關問題