簡體   English   中英

在沒有互聯網的情況下連接到Wi-Fi時使用蜂窩數據

[英]Use cellular data while connected to Wi-Fi with no internet

我正在創建一個Android應用程序,該應用程序通過WiFi連接到另一台設備,該設備通過套接字連接發送和接收數據。 我希望能夠在保持連接到該設備的同時使用蜂窩網絡數據執行其他操作(例如瀏覽)。

在iOS設備上,將網絡設置更改為“靜態”,並將“路由器”字段留空似乎可行。 但是,在我的Android設備(運行Android 7.0的Samsung Galaxy Note 5)上,如果我將其保留為空白,將無法保存網絡設置。

我嘗試使用Mobiwol,Super Download和Speedify等第三方應用程序(似乎只有Speedify可以工作),但是我希望能夠不需要這些應用程序就能做到這一點。

我還嘗試在開發人員設置中打開“保持移動數據打開”,並打開“智能網絡開關”,該開關僅切換到我的蜂窩數據,因此我的應用程序無法正常運行,因為它在技術上未連接到WiFi。

更新:在我的應用程序中通過WiFi連接時,我設法使蜂窩電話能夠工作(感謝Remy Lebeau和在Android上連接WIFI后如何通過移動網絡保持連接? )。 請參見下面的代碼。

現在,我希望能夠在后台應用程序中使用蜂窩數據,例如通知,或者如果我想打開瀏覽器等。有沒有辦法做到這一點?

NetworkRequest.Builder req = new NetworkRequest.Builder();
req.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); 
req.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); 

ConnectivityManager.NetworkCallback networkCallback = new 
ConnectivityManager.NetworkCallback() {

     @Override
     public void onAvailable(Network network) {
            connectivityManager.bindProcessToNetwork(network)                   
     }
};

connectivityManager.requestNetwork(req.build(), networkCallback);

也許這段代碼對您有用,它會檢查是否有wifi連接來完成這項工作,或者它將通過移動連接來完成

ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobile = connManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

if (wifi.isConnected()){
    // If Wi-Fi connected
}

if (mobile.isConnected()) {
    // If Internet connected
}

確保將其添加到清單中:

“android.permission.ACCESS_NETWORK_STATE”

這是一種檢查wifi連接的方法,當返回false時,您可以將移動數據添加為else語句

private boolean checkWifiOnAndConnected() {
    WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE);

    if (wifiMgr.isWifiEnabled()) { // Wi-Fi adapter is ON

        WifiInfo wifiInfo = wifiMgr.getConnectionInfo();

        if( wifiInfo.getNetworkId() == -1 ){
            return false; // Not connected to an access point
        }
        return true; // Connected to an access point
    }
    else {
        return false; // Wi-Fi adapter is OFF
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM