ConnectivityManager类 判断网络是否可用进行设置

来源:互联网 发布:国语版港剧软件 编辑:程序博客网 时间:2024/05/18 02:35

一. MainActivity.java

package androidthree_1509d.base;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.AsyncTask;import android.provider.Settings;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ListView;import com.google.gson.Gson;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URL;import java.util.List;import javax.net.ssl.HttpsURLConnection;public class MainActivity extends AppCompatActivity {    private ListView listView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) findViewById(R.id.listview);        //获取网路信息        getDataFromNet();    }    public void getDataFromNet() {        //当进入页面时先判断网络状态是否连接可用...不可用,设置        if (isNetConnectioned()){            //获取网络数据            getData();        }else {            //当未连接时弹出对话框提醒            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);            builder.setTitle("警告!");            builder.setMessage("网络未连接,是否去设置?");            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialogInterface, int i) {                    //设置网络  Settings.ACTION_WIFI_SETTINGS                    Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);                    startActivity(intent);                }            });            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialogInterface, int i) {                }            });               builder.show();        }    }    /**     * 判断网络是否可用的方法     * 异常:SecurityException: ConnectivityService:     *       Neither user 10033 nor current process has android.permission.ACCESS_NETWORK_STATE.     *       如果需要获取网络的状态,需要添加权限android.permission.ACCESS_NETWORK_STATE     */    public boolean isNetConnectioned() {        //1. 获取网络连接对象        ConnectivityManager service = (ConnectivityManager) MainActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE);        //2. 获取网络连接的信息        NetworkInfo info = service.getActiveNetworkInfo();        //3. 信息不为空时,就代表网络可用        if (info != null){            return  info.isAvailable();        }        return false;    }    //获取网络数据    public void getData() {        AsyncTask<String,String,String> task = new AsyncTask<String, String, String>() {            @Override            protected String doInBackground(String... strings) {                try {                    //连接路径                    String path = "https://suggest.taobao.com/sug?code=utf-8&q=%E6%98%BE%E7%A4%BA%E5%99%A8";                    //连接网络                    URL url = new URL(path);                    HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();                    connection.setRequestMethod("GET");                    connection.setConnectTimeout(5000);                    connection.setReadTimeout(5000);                    //响应数据                    int responseCode = connection.getResponseCode();                    if (responseCode==200){                        InputStream inputStream = connection.getInputStream();                        String json = streamToString(inputStream,"utf-8");                        return json;                    }                } catch (Exception e) {                    e.printStackTrace();                }                return null;            }            @Override            protected void onPostExecute(String json) {                ResultBean resultBean = new Gson().fromJson(json, ResultBean.class);                List<List<String>> list = resultBean.getResult();                //设置适配器                MyAdapter adapter = new MyAdapter(MainActivity.this, list);                listView.setAdapter(adapter);            }        };        task.execute();    }    private String streamToString(InputStream inputStream, String gbk) {        try {            //转换流            InputStreamReader streamReader = new InputStreamReader(inputStream, gbk);            //缓冲流            BufferedReader reader = new BufferedReader(streamReader);            //缓冲区            StringBuilder builder = new StringBuilder();            //读取数据            String s = null;            while ((s=reader.readLine())!=null){                builder.append(s);            }            return  builder.toString();        } catch (Exception e) {            e.printStackTrace();        }        return  null;    }}

二. 自定义适配器类 MyAdapter.java

package androidthree_1509d.base;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import java.util.List;public class MyAdapter extends BaseAdapter{    private Context context;    private List<List<String>> list;    public MyAdapter(Context context, List<List<String>> list) {        this.context = context;        this.list = list;    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int i) {        return list.get(i);    }    @Override    public long getItemId(int i) {        return i;    }    @Override    public View getView(int i, View view, ViewGroup viewGroup) {        ViewHolder holder = null;        if (view == null){            view = View.inflate(context, R.layout.item_layout, null);            holder = new ViewHolder();            //查找控件            holder.name = view.findViewById(R.id.name);            view.setTag(holder);        }else{            holder = (ViewHolder) view.getTag();        }        //获取数据重新赋值        holder.name.setText(list.get(i).get(0)+"      "+list.get(i).get(1));        return view;    }    static class ViewHolder{        TextView name;    }}

三. 自定义请求网络数据的Bean类

四. 在AndroidMainifest.xml中添加

1. 网络请求权限:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

2. 判断网络状态的权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

原创粉丝点击