前段时间,做一个Demo时需要判断机子的网络连接状况并设置网络,通过查资料找到了解决问题的答案
一、判断网络状况
private boolean isNetworkAvailable() {
//取得系统网络服务
ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
//取得网络信息
NetworkInfo nk = cm.getActiveNetworkInfo();
return nk!=null&&nk.isAvailable();
}
二、设置网络
/**
* 设置网络
* 如果机子没有网络连接则转入到网络设置界面
*
*/
private void networkSet(){
if(isNetworkAvailable()){
new Thread(){
public void run() {
try {
sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Intent intent = new Intent(SplashActivity.this,MainAppActivity.class);
startActivity(intent);
finish();
};
}.start();
}else{
AlertDialog.Builder builder = new Builder(SplashActivity.this);
Drawable icon = getResources().getDrawable(R.drawable.dialog_error);
builder.setIcon(icon);
builder.setTitle(R.string.network_dialog_title);
builder.setMessage(R.string.network_dialog_message);
builder.setPositiveButton(R.string.network_dialog_positiveButton_text,
new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings");
startActivity(intent);
}
});
builder.setNegativeButton(R.string.network_dialog_negativeButton_text,
new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.create().show();
}
}
进入到网络设置Activity是通过PackageName和ClassName,这两项可以通过LogCat处得知(Settings/Wireless&networks)