网络判断

xiaoxiao2021-02-28  107

package com.example.asynctaskdemo.utils; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; /**  * 网络判断的工具类  */ public class NetWorkUtils {     /**      * 检查设备网络是否连接      * @return      */     public static boolean isConnection(Context context){         //得到管理网络的服务实例         ConnectivityManager connMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);         //得到网络信息 (判断网络是否连接、3G、4G)         NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();         //判断网络是否已经连接,如果连接的话,返回true,否则false         return (networkInfo != null && networkInfo.isConnected());     }

}

MainActivity

package com.example.asynctaskdemo; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import com.example.asynctaskdemo.bean.Info; import com.example.asynctaskdemo.utils.NetWorkUtils; import com.example.asynctaskdemo.utils.StreamTools; import com.google.gson.Gson; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; public class MainActivity extends AppCompatActivity {     public static final String TAG = "MainActivity";     private ProgressDialog dialog;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         //new Thread + Handler  用异步任务类去替换     }     public void btnRequest(View v){         //isConnection 返回的true,证明网络是连接的         if(NetWorkUtils.isConnection(this)) {             //有网就去请求数据             getData();         }else{             //弹出一个对话框             showNetWorkSettingDialog();         }     }     /**      * 使用异步任务执行网络请求      * */     private void getData(){         //parameter : 放置请求连接地址以及请求参数 类型         //Progress : 进度,当你们下载文件的时候,Integer         //result: 限定你所请求网络数据返回的类型是什么,String         new AsyncTask<String,Void,String>(){             @Override             protected void onPreExecute() {                 super.onPreExecute();                 //就是准备加载时会执行                 //时候显示数据请求的加载框                 Log.e(TAG, "onPreExecute执行了" );                 showLoadDialog();             }             @Override             protected void onPostExecute(String s) {                 super.onPostExecute(s);                 //当网络数据请求完毕时会被执行                 //这个方法是运行在主线程的,做UI的更新                 Log.e(TAG, "onPostExecute执行了 " );                 if(s != null){                     //JSON  去解析json                     Gson gson = new Gson();                     Info info = gson.fromJson(s, Info.class);                    // Log.e(TAG, "onPostExecute: "+info.getResult().getData().get(0).getImtro() );                     //设置适配器                     //lv.setAdapter();                 }                 //隐藏进度加载对话框                 dialog.dismiss();             }             @Override             protected void onProgressUpdate(Void... values) {                 super.onProgressUpdate(values);                 //当今都更新的时候会被执行                 Log.e(TAG, "onProgressUpdate执行了 " );             }             @Override             protected String doInBackground(String... params) {                 try {                     //耗时操作都在这里执行,子线程                     Log.e(TAG, "doInBackground执行了 " );                     //String...大家可以可变参数类型看作是一个数组                     String path = params[0];                     URL url = new URL(path);                     HttpURLConnection connection = (HttpURLConnection) url.openConnection();                     connection.setRequestMethod("GET");                     connection.setConnectTimeout(5*1000);                     connection.setReadTimeout(5*1000);                     int code = connection.getResponseCode();                     if(code == HttpURLConnection.HTTP_OK){//判断服务是否成功应答                         //服务成功应答                         InputStream is = connection.getInputStream();                         String json = StreamTools.readFromNetWork(is);                         return json;                     }                 } catch (Exception e) {                     e.printStackTrace();                 }                 return null;             }         }.execute("http://apis.juhe.cn/cook/query.php?key=ff00d7339861c7fd7d5b54b16b76422a&menu="+ URLEncoder.encode("黄焖鸡"));     }     /**      * 展示一个加载进度对话框      */     private void showLoadDialog(){         dialog = new ProgressDialog(this);         dialog.setMessage("顾晓彬玩命加载中...");         dialog.show();     }     /**      * 设置网络设置提示对话框      */     private void showNetWorkSettingDialog(){         AlertDialog.Builder builder = new AlertDialog.Builder(this);         builder.setMessage("没有设置网络,请您设置网络!");         builder.setNegativeButton("取消",null);         builder.setPositiveButton("设置", new DialogInterface.OnClickListener() {             @Override             public void onClick(DialogInterface dialog, int which) {                 //跳转网络设置界面  隐士意图                 Intent intent = new Intent();                 intent.setAction("android.settings.WIRELESS_SETTINGS");                 startActivity(intent);             }         });         builder.create().show();     } }

转载请注明原文地址: https://www.6miu.com/read-67939.html

最新回复(0)