2012-06-26 73 views
2

我想知道通過編碼啓用和禁用黑莓網絡連接的方式。禁用和啓用黑莓網絡

編輯

protected void disableConnection() { 
    activeConn = RadioInfo.getActiveWAFs(); 
    if(activeConn == 0){ 
     activeConn = RadioInfo.getEnabledWAFs(); 
    } 

    mystore.setContents(new Integer(activeConn)); 
    mystore.commit(); 

    Radio.deactivateWAFs(activeConn); 
    Dialog.alert("Off internet"); 
} 

protected void enableConnection() { 
    if(RadioInfo.getState() == RadioInfo.STATE_ON){ 
     Dialog.alert("Internet on already"); 
    }else if(mystore.getContents() != null){ 
     if(Radio.activateWAFs(Integer.parseInt(mystore.getContents().toString())) == true){ 
      Dialog.alert("On Internet"); 
     }else{ 
      Dialog.alert("Unable to on internet"); 
     } 
    }else{ 
     Dialog.alert("Unable to on internet"); 
    } 
} 

這兩種方法,我上依次調用和關閉按鈕的點擊。

+2

對於檢查互聯網是否關閉然後爲此,你喜歡這個CoverageInfo.isCoverageSufficient(CoverageInfo.COVERAGE_DIRECT); –

回答

3

你問到互聯網連接,所以我假設你不僅僅對Wi-Fi連接感興趣。撥打Radio.deactivateWAFs(RadioInfo.WAF_WLAN);只會禁用Wi-Fi。

一個更好的實現可能會首先檢查哪些無線電開啓,然後關閉這些無線電。當您想要再次開啓服務時,請重新啓動您關閉的無線電。事情是這樣的:

/** we record which radios are active */ 
private int _activeWAFs = 0; 

private void getActiveWAFs() { 
    _activeWAFs = RadioInfo.getActiveWAFs(); 
    if (_activeWAFs == 0) { 
     _activeWAFs = RadioInfo.getEnabledWAFs(); 
    } 
} 

/** turn radios off if they're currently on */ 
private void disableAll() { 
    getActiveWAFs(); 
    Radio.deactivateWAFs(_activeWAFs); 
} 

/** turn radios on, if we turned them off with disableAll() */ 
private void enableAll() { 
    boolean success = Radio.activateWAFs(_activeWAFs) && (RadioInfo.getState() == RadioInfo.STATE_ON); 
    if (!success) { 
     // do something? 
    } 
} 

另外,如果你想了解這些操作的結果,或者外部轉換到無線電通知,你可以實現RadioStatusListener

public void networkStarted(int networkId, int service) { 
    if (RadioInfo.getState() == RadioInfo.STATE_ON) { 
     // network ready to use! 
    } 
} 

而且, ,此通話將影響整個設備,而不僅僅是您的應用的互聯網連接。

+0

你好似乎工作得很好,但是當我關閉網絡並關閉我的應用程序並啓動瀏覽器時,它顯示「沒有網絡」,這很好,但是當我再次進入我的應用並按下網絡按鈕時(enableAll代碼在此執行)成爲true.Is是因爲_activeWAFs變量的行爲? –

+0

嗨,我想我已經通過使用PersistentObject的概念解決了這個問題,無論如何感謝你對我的幫助。 –

+0

我已經做了這件事,但有一件事需要知道,當我通過我的代碼關閉互聯網時,它會停止網絡,但當我再次通過我的代碼打開互聯網時,它只是開始請求頁面,但從不打開任何鏈接,任何想法對這個? –

2

Radio.deactivateWAFS()是否會關閉所有的無線連接或互聯網連接或藍牙連接。

示例:無效WiFi連接。

Radio.deactivateWAFs(RadioInfo.WAF_WLAN); 
+0

我們的應用程序也會產生這種影響嗎?現在我在互聯網上使用兩個按鈕1st將關閉互聯網,關閉按鈕後,我再次打開瀏覽器,但它是開放的網址。 我想要的是從我的程序關閉後,設備應該無法打開任何鏈接(關閉Internet),之後,設備將允許您打開鏈接。 –

+0

@ R.j。,參見[我的答案](http://stackoverflow.com/a/11217650/119114)。是的,這會影響整個設備,而不僅僅是您的應用程序。 – Nate

2

試試這個 -

這將打開wifi-

Radio.activateWAFs(RadioInfo.WAF_WLAN); 

這將關閉wifi-

Radio.deactivateWAFs(RadioInfo.WAF_WLAN);