加班,回来已经八点多了,吃了个晚饭,一瞧,九点了。。。时间总是不够用啊。
在AndroidManifest.xml里面加上获取网络状态的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends Activity {
//使用SharedPreferences来储存状态,第二次及以后检查网络状态。
SharedPreferences check;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//check文件,存放在/data/data/packageName/shared_prefs目录下
check = getSharedPreferences("check", 0);
//并非必须要先写个值进去才能读取,像这样给个默认值也可以直接读取。
boolean isFirstStart = check.getBoolean("isFirstStart", true);
if (isFirstStart) {
//将isFirstStart的值改为false
check.edit().putBoolean("isFirstStart", false).commit();
} else {
CheckNetWork();
}
}
private void CheckNetWork() {
ConnectivityManager cm= (ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if (info != null && info.isAvailable() && info.getState() == NetworkInfo.State.CONNECTED){
//3G网络
if(ConnectivityManager.TYPE_MOBILE==info.getType()){
Dialog(1);
Toast.makeText(getApplicationContext(), "Mobile", Toast.LENGTH_LONG).show();
//wifi
}else if(ConnectivityManager.TYPE_WIFI==info.getType()){
Toast.makeText(getApplicationContext(), "WIFI", Toast.LENGTH_LONG).show();
//有线网络
}else if(ConnectivityManager.TYPE_ETHERNET==info.getType()){
Dialog(2);
Toast.makeText(getApplicationContext(), "ETHERNET", Toast.LENGTH_LONG).show();
}
}else if(info ==null){
Dialog(0);
Toast.makeText(getApplicationContext(), "No Net", Toast.LENGTH_LONG).show();
}
}
private void Dialog(int id) {
switch (id) {
case 0:
new AlertDialog.Builder(this)
.setTitle("未连接任何网络")
.setMessage("开启wifi")
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int whichButton) {
startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));
}
}).show();
break;
case 1:
new AlertDialog.Builder(this)
.setTitle("连接到3G网络")
.setMessage("请开启wifi")
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int whichButton) {
startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));
}
}).show();
break;
case 2:
new AlertDialog.Builder(this)
.setTitle("连接到有线网络")
.setMessage("请开启wifi")
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int whichButton) {
startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS));
}
}).show();
break;
}
}
}
在判断状态的时候,发现一个问题。有些时候连接的是AP,也就是所谓的热点。Ap是属于info ==null的情况,暂时还没有处理,后续会继续更进。