我知道很多人会觉得这个问题不值得,但我是android开发的新手。我想知道有关服务和广播接收器的信息。我已经在广播接收器上查看了一些演示应用程序,并制作了几个演示应用程序。现在我正在努力完成的事情需要帮助。我想创建一个在后台运行的服务,它会告诉用户网络或wifi是否可用。请帮帮我。感谢
您可以使用广播接收器
<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
}
}
在堆栈溢出和其他站点中有很多可用的解决方案。一个好的解决方案就在这里。。