【发布时间】:2015-04-21 08:11:29
【问题描述】:
我基于网络连接的android应用程序,当我的手机连接到互联网时它工作正常,但是当互联网连接断开时它停止工作(肥胖),没有自动连接。
我想在互联网可用时将数据放到服务器上。
任何帮助都会对我有所帮助。
NetworkBroadcastReceiver.java
public class NetworkBroadcastReceiver extends BroadcastReceiver {
private static ConnectivityManager mConnectivityManager;
public NetworkBroadcastReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
// TODO: This method is called when the BroadcastReceiver is receiving
// an Intent broadcast.
if (isNetworkAvailable(context))
Toast.makeText(context, "Connected", Toast.LENGTH_LONG).show();
else
Toast.makeText(context, "Not Connected", Toast.LENGTH_LONG).show();
}
/**
*
* @param context
* @return
*/
public static boolean isNetworkAvailable(Context context) {
boolean isMobile = false;
boolean isWifi = false;
NetworkInfo[] infoAvailableNetworks = getConnectivityManager(context).getAllNetworkInfo();
if (infoAvailableNetworks != null) {
for (NetworkInfo network : infoAvailableNetworks) {
if (network.getType() == ConnectivityManager.TYPE_WIFI) {
if (network.isConnected() && network.isAvailable())
isWifi = true;
}
if (network.getType() == ConnectivityManager.TYPE_MOBILE) {
if (network.isConnected() && network.isAvailable())
isMobile = true;
}
}
}
return isMobile || isWifi;
}
/**
* Return connectivity manager instance.
* @return mConnectivityManager
*/
public static ConnectivityManager getConnectivityManager(Context context) {
if (mConnectivityManager == null) {
mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
}
return mConnectivityManager;
}
}
Manifest.xml
<receiver
android:name=".receiver.NetworkBroadcastReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
</intent-filter>
</receiver>
【问题讨论】:
-
使用广播接收器捕获互联网连接
-
我正在使用广播但不知道如何连接,我正在上传我的广播代码。
-
您是否在清单中声明了它。参考这个stackoverflow.com/questions/15698790/…
-
一旦您获得互联网连接的广播,启动服务以将您的数据发送到服务器,在数据提交到服务器后停止服务。
-
如我所见,您的
BroadcastReceiver是一个匿名类,因此您无法在Manifest 中声明它。请提供您的Activity和 AndroidManifest.xml 的完整代码
标签: android