**MainActivity 布局**
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="16dp" />
</android.support.constraint.ConstraintLayout>
**MainActivity 里面的代码**
//第一步找控件
Button button= findViewById(R.id.button);
//第二步点击事件
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//第三步开启子线程
new Thread(){
@Override
public void run() {
super.run();
//在这里写耗时操作(请求网络数据)
//第四步:判断网络状态
boolean networkConnected = Http.isNetworkConnected(MainActivity.this);
//判断有没有网
if (networkConnected){
//有网就请求数据
String get = Http.requestHttpGet("http://api.expoon.com/AppNews/getNewsList/type/1/p/1");
Gson gson=new Gson();
JsonBean bean = gon.fromJson(get, JsonBean.class);
//把数据传递给主线程
Message message=new Message();
message.what=0;
message.obj=bean;
handler.sendMessage(message);
}else{
handler.sendEmptyMessageDelayed(1,0);
}
}
}.start();
}
});
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 0:
JsonBean bean= (JsonBean) msg.obj;
Toast.makeText(MainActivity.this,""+bean.toString(),Toast.LENGTH_LONG).show();
break;
case 1:
//没网就提示用户 没网
Toast.makeText(MainActivity.this,"兄嘚,没网啊?",Toast.LENGTH_LONG).show();
break;
}
}
};
Http 类中的代码
public class Http {
/**
* 判断有没有网
*/
public static boolean isNetworkConnected(Context context) {
//注意要写网络权限
//判断参数是否为空(必须)
if (context != null) {
//getSystemService 获取系统服务
//获取连接管理器
ConnectivityManager mConnectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取网络状态
NetworkInfo info = mConnectivityManager.getActiveNetworkInfo();
if (info != null) {
//判断网络是否可用
return info.isAvailable();
}
}
return false;
}
/**
* 请求数据GET请求
*/
public static String requestHttpGet(String strUrl) {
try { //设置url
URL url = new URL(strUrl);
//获取HttpURLConnection
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//设置为get请求
connection.setRequestMethod("GET");
//设置连接主机超时时间
connection.setConnectTimeout(5000);
//设置从主机读取数据超时
connection.setReadTimeout(5000);
//获取请求码(来判断网络请求是否正确)
int code = connection.getResponseCode();
//判断请求是否成功
if (code == HttpURLConnection.HTTP_OK) {
//如果数据请求成功
//就获取数据
InputStream stream = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "utf-8"));
//拼接字符串
StringBuilder builder = new StringBuilder();
//把数据读取从成字符串
String str = "";
while ((str = reader.readLine()) != null) {
//把一行行数据拼接成一行数据
builder.append(str);
}
//返回拼接后的数据
return builder.toString();
}
//关闭连接
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
Android 判断有没有网
猜你喜欢
转载自blog.csdn.net/qq_43640920/article/details/85339148
今日推荐
周排行