ConnectivityManager类 判断网络是否可用进行设置
2017-09-14 14:12
447 查看
一. MainActivity.java
二. 自定义适配器类 MyAdapter.java
三. 自定义请求网络数据的Bean类
四. 在AndroidMainifest.xml中添加
1. 网络请求权限:
2. 判断网络状态的权限:
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>
相关文章推荐
- 判断项目的网络是否可用然后打开设置面板
- 判断网络是否可用并打开WIFI设置
- android 判断网络是否可用,并调用系统设置项
- 判断当前网络是否可用和调用系统设置wifi界面
- Android判断网络是否可用,调用系统网络设置
- 判断网络连接是否可用并设置网络连接
- Android 判断当前网络连接是否可用、打开设置网络界面
- Android判断网络连接是否可用,WiFi、移动数据是否打开等
- Android中判断网络连接是否可用及监控网络状态
- Android中判断网络连接是否可用及监控网络状态
- Broadcast监听网络状态,ping判断网络是否可用
- android中判断网络连接是否可用
- Wifi设置中添加网络,判断编辑是否可提交(后续分析ScrollView)
- mono 判断系统的网络是否可用
- swift 判断当前设备网络是否可用
- Android中判断网络是否可用的代码_大企鹅
- 判断网络是否可用
- 16、isNetworkAvailable判断网络是否可用
- Android检测网络状态,判断当前网络是否可用
- Android中判断网络是否可用的代码