2013-02-14 91 views
0

用這種方法我知道用戶連接與否。
如何啓用互聯網連接才能發送信息?

public boolean isOnline() { 
    ConnectivityManager cm = 
     (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
    if (netInfo != null && netInfo.isConnected()) { 
     return true; 
    } 
    return false; 
} 
在我的應用程序

當用戶按下發送,將一些數據上傳到服務器,如果沒有conectivity它會說:「我們將嘗試稍後發送」,但我怎麼能上網查狀態只有當連接開啓時,發送信息?

+3

您已經有了檢查連接的方法,爲什麼不簡單地調用它呢? – CodeZombie 2013-02-14 18:38:43

+0

爲此服務,並檢查互聯網連接,或者可以使用接收器。 – 2013-02-14 18:44:33

回答

0

首先,使用IntentService來處理所有數據上傳。讓它檢查你的連接方式 - 如果連接,上傳數據否則存儲它(使用SharedPreferences或數據庫)。

其次創建BroadcastReceiver,並在清單與以下<intent-filter>註冊吧...

<intent-filter> 
    <action android:name="android.net.wifi.STATE_CHANGE" /> 
    <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />" 
</intent-filter> 

注意:您將需要以下權限...

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

onReceive(...)方法的BroadcastReceiver它檢查是否有任何數據未決,如果有,它會啓動IntentService發送數據。

另外,使用由IntentService創建的Notifications向用戶提供反饋。

+0

BroadcastReceiver是解決方案謝謝! – user2033349 2013-02-15 15:52:23

+0

http://ofps.oreilly.com/titles/9781449390501/Android_Broadcast_Receivers.html – user2033349 2013-02-20 15:49:03

0

當沒有檢測到互聯網連接時,爲什麼不提醒用戶在連接時會發送消息。運行後臺進程或定期檢查用戶是否連接的服務,以及何時運行發送數據的方法。

0

這應有助於:http://www.androidhive.info/2012/07/android-detect-internet-connection-status/

如果你想有一個額外的例子:http://www.androidsnippets.com/have-internet

在第一個鏈接(AndroidHive.info)該網站是一個新手最好friend.All的TUTS提供DL能源代碼這幾乎是傻瓜證明,並寫得很好/記錄。有很多你可以做的只是從他的手中將不同的東西拼湊成獨特的東西。最佳學習方法

+0

謝謝,但我如何創建一個時間間隔來檢查每5分鐘,或者有任何方法來啓用連接時自動調用此方法? – user2033349 2013-02-15 15:44:37