我知道很多人會發現這個問題不值得,但我新到Android development.I想知道關於服務和廣播receivers.I已經看到,在廣播接收器的一些演示應用程序和做了幾個演示應用程序。現在我正在努力完成我需要幫助。 我想創建一個在後臺運行的服務,它會告訴用戶有關網絡或WiFi可用或不。請幫助我。謝謝服務和廣播接收器來檢查網絡的可用與否
-4
A
回答
0
你可以使用一個廣播接收器
<receiver
android:name=".NetworkChangeReceiver"
android:label="NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>
在你的接收機類
public class NetworkChangeReceiver extends BroadcastReceiver {
public static Internet internet;
public static String changestatus = "";
@Override
public void onReceive(final Context context, final Intent intent) {
String status = NetworkUtil.getConnectivityStatusString(context);
if (status.equals("Not connected to Internet")) {
if (context != null && internet != null) {
internet.net();
}
}
changestatus = status;
}
public interface Internet {
public void net();
}
}
網絡的Util類來檢查連接
public class NetworkUtil {
public static int TYPE_WIFI = 1;
public static int TYPE_MOBILE = 2;
public static int TYPE_NOT_CONNECTED = 0;
public static int getConnectivityStatus(Context context) {
if (context==null) {
return 0;
}
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (null != activeNetwork) {
if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
return TYPE_WIFI;
if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
return TYPE_MOBILE;
}
return TYPE_NOT_CONNECTED;
}
public static String getConnectivityStatusString(Context context) {
int conn = NetworkUtil.getConnectivityStatus(context);
String status = null;
if (conn == NetworkUtil.TYPE_WIFI) {
status = "Wifi enabled";
} else if (conn == NetworkUtil.TYPE_MOBILE) {
status = "Mobile data enabled";
} else if (conn == NetworkUtil.TYPE_NOT_CONNECTED) {
status = "Not connected to Internet";
}
return status;
}
}
在你的活動中,你可以實現網絡接口
public class MyActivity extends FragmentActivity implements
Internet {
@Override
protected void onCreate(Bundle arg0) {
// TODO Auto-generated method stub
super.onCreate(arg0);
NetworkChangeReceiver.internet = this;
}
@Override
public void net() {
// TODO Auto-generated method stub
//Show Alert connection is not avaiable
}
}
-1
有很多解決方案可用於堆棧溢出和其他網站。一個很好的解決方案是here ..
相關問題
- 1. 檢查服務是否從廣播接收器運行
- 2. 使用服務,TimerTask的和廣播接收器來檢查各種更新
- 3. 活動開始廣播接收器檢查網絡狀態
- 4. 廣播接收器和服務
- 5. 廣播接收器,服務和Wakelock
- 6. 服務和廣播接收器
- 7. NodeJS和網絡套接字:檢查套接字來源是否與網絡套接字服務器相同
- 8. 服務內的廣播接收器
- 9. 廣播接收器檢測到變化的移動網絡
- 10. 使用廣播接收器檢查互聯網連接
- 11. 從服務的互聯網連接的廣播接收器
- 12. 廣播接收機來檢查互聯網連接
- 13. 服務或廣播接收器
- 14. 廣播接收器不被服務
- 15. 從廣播接收器啓動服務
- 16. 廣播接收器未啓動服務
- 17. Android服務或廣播接收器
- 18. 來電廣播接收器
- 19. 接收來自廣播接收器的廣播意圖錯誤
- 20. 廣播接收器與sendMultiPartTextMessage
- 21. 檢測服務內廣播接收器的呼叫結束
- 22. 檢查Internet連接與廣播接收器不工作
- 23. 與AlarmManager和廣播接收器
- 24. Android。混亂是否使用廣播接收器或服務接收短信
- 25. 接收來自網絡服務
- 26. 廣播接收器和phonestatelistener
- 27. 廣播接收器和ContentResolver
- 28. 安卓網絡改變廣播接收器和獲取網絡類型
- 29. 使用AlarmManager和廣播接收器啓動Android服務
- 30. 使用的PendingIntent與廣播接收器
不我必須使用一個服務??? – Anuj 2015-03-31 10:30:31
no..if連接丟失的廣播被調用和接口將推動狀態的活動,你能在那裏檢查,並顯示在網上容易消息()方法 – 2015-03-31 10:31:46
但是,如果用戶終止應用程序是什麼,然後怎麼樣我會不會知道abt netwirk的變化? – Anuj 2015-03-31 10:37:06