前段时间,做一个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)