由于大部分的软件都需要网络所以当打开软件时判断当前是否有网络并且进行相关的网络设置都是非常重要而常见的。
实现效果当没有网络时提醒用户是否去网络设置:
权限:需要在清单文件里面配置
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
代码:
package com.example.administrator.wangluotiaozhaun;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 实现效果,打开软件,当没有网络时弹出对话框跳转到切换网络界面
// 以下的这个判断可以使用户在失去网络链接的情况下,自动跳转到设置无线网界面。
boolean b = checkNet();
if (!b) {
// 使用对话框判断是否可以操作
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("是否去设置网络");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 使用隐士跳转自动跳转到设置网络界面
Toast.makeText(MainActivity.this, "设置网络!", Toast.LENGTH_LONG).show();
Intent intent = new Intent("android.settings.WIRELESS_SETTINGS");
startActivity(intent);
return;
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "查看本地", Toast.LENGTH_LONG).show();
}
});
builder.create();
builder.show();
}else {
Toast.makeText(this, "网络正处于连接中", Toast.LENGTH_LONG).show();
}
}
// 判断当前的网络状态如果有网的话就返回true如果没有网的话就返回false
private boolean checkNet() {
ConnectivityManager conn = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo net = conn.getActiveNetworkInfo();
if (net != null && net.isConnected()) {
return true;
}
return false;
}
}
其实这种实现效果也也比较简单使用。
使用广播对当前网络的实时监控
很多应用在使用时如果网络发生改变都会有提示,下面通过动态注册来实现对网络的监控
package com.bawei.ggggs;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends Activity {
private IntentFilter filter;
private NetworkChange change;
//类似网络监听的功能
// 动态注册
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
filter = new IntentFilter();
filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
change = new NetworkChange();
registerReceiver(change, filter);
}
// 定义一个内部类继承广播
class NetworkChange extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// 连接判断
// Toast.makeText(context, "网络连接",1).show();
ConnectivityManager manager=(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = manager.getActiveNetworkInfo();
if (info!=null&&info.isConnected()) {
Toast.makeText(context, "网络连接成功",1).show();
}else {
// 当网络连接 成功时弹出对话框来判断是否跳转到设置网络界面
Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage("是否设置网络");
builder.setPositiveButton("是", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 跳转到设置网络界面
Toast.makeText(MainActivity.this, "设置网络!", Toast.LENGTH_LONG).show();
Intent intent = new Intent("android.settings.WIRELESS_SETTINGS");
startActivity(intent);
return;
}
});
builder.setNegativeButton("取消",new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "网络连接失败",1).show();
}
});
builder.create();
builder.show();
}
}
}
}
其实使用广播也比较简单实用它不同于上面那种,它是在使用当前APP时网络发生变化时就会弹出一个是否切换网络的对话框而第一种方法就是每次打开APP时他会走oncreate里面的方法来检测当前是否有网络并且给具体的操作提示。