Android上實現一個簡單的天氣預報APP(三) 獲取網路資料
阿新 • • 發佈:2019-01-25
學習參考資源:https://www.gitbook.com/book/zhangqx/mini-weather/details
前面我們已經配置好了介面佈局,顯示佈局上的資料都是我們胡亂載入的,接下里我們要將這些資料更新為網路上的真實資料
1)檢查網路連線狀態
1.新建一個java類CheckNet
我們使用ConnectManager類的getSystemService方法,獲取網路連線狀態值package com.example.xchen.mweather; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; /** * Created by xchen on 16/12/17. */ public class CheckNet { public final static int NET_NONE = 0; public final static int NET_WIFI = 1; public final static int NET_MOBILE = 2; public static int getNetState(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if(networkInfo == null) return NET_NONE; int type = networkInfo.getType(); if(type == ConnectivityManager.TYPE_MOBILE) return NET_MOBILE; else if(type == ConnectivityManager.TYPE_WIFI) return NET_WIFI; return NET_MOBILE; } }
2.在MainActivity中使用這個類,判斷網路狀態
3.在manifest中,開啟檢視網路狀態許可權
執行一下!
2)獲取網路上的資料
接下來我們要將這個網頁上的資料獲取下來。
1.藉助HttpUrlConnection(java.net.HttpUrlConnection),獲取Url網頁上的資料。
新建一個函式名為getWeatherDatafromNet(String),如下
private void getWeatherDatafromNet(String cityCode) { final String address = "http://wthrcdn.etouch.cn/WeatherApi?citykey="+cityCode; Log.d("Address:",address); new Thread(new Runnable() { @Override public void run() { HttpURLConnection urlConnection = null; try { URL url = new URL(address); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setConnectTimeout(8000); urlConnection.setReadTimeout(8000); InputStream in = urlConnection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuffer sb = new StringBuffer(); String str; while((str=reader.readLine())!=null) { sb.append(str); Log.d("date from url",str); } String response = sb.toString(); Log.d("response",response); }catch (Exception e) { e.printStackTrace(); } } }).start(); }
2.在MainActivity的onCreate方法中呼叫該方法
3.在Manifest中開啟Internet訪問許可權
執行一下!