Network Connection
Network Connection:網路連線。
Checking Network Connection
android檢查網路需要ConnectivityManager 類別,還需要呼叫getSystemService 方法。
ConnectivityManager check = (ConnectivityManager)
this.context.getSystemService(Context.CONNECTIVITY_SERVICE);
有了ConnectivityManager 類別,就可以使用getAllNetworkInfo 方法來獲取所有網路的資料。取得方法用NetworkInfo的陣列。
NetworkInfo[] info = check.getAllNetworkInfo();
最後,需要檢查網路連線狀態。
//尋找跟哪一個網路連結
for (int i = 0; i<info.length; i++){
if (info[i].getState() == NetworkInfo.State.CONNECTED){
Toast.makeText(context, "Internet is connected
Toast.LENGTH_SHORT).show();
}
}
//info[i].getState:查看目前連線狀態。
getState的數值其他網路狀態
1-->連線中
2-->斷線
3-->斷線中
4-->暫停
5-->不明
1-->連線中
2-->斷線
3-->斷線中
4-->暫停
5-->不明
Performing Network Operations
如果要檢查是連上網,android 提供 HttpURLConnection 和 URL類別。
String link = "http://www.google.com";
URL url = new URL(link);
之後,需要用 openConnection 方法,接收HttpURLConnection的物件。還需要 connect 方法。
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.connect();
最後一件事,獲取網站的HTML 代碼。會使用InputStream 和 BufferedReader 的方法。
//InputStream:以Byte為單位的輸入串流。
//getInputStream:取得伺服器輸入串流。
//BufferedReader:採用緩衝區來處理檔案讀寫, 以減少磁碟存取頻率加快處理速度,格式是UTF-8。
InputStream is = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
//把抓到的資料放入reader,reader一次讀一行放入data,在data加上跳行放入webPage 。
String webPage = "",data="";
while ((data = reader.readLine()) != null){
webPage += data + "\n";
}
HttpURLConnection 其他 類別
disconnect():將http連線關閉。
getRequestMethod(string):取得請求遠程HTTP服務器的請求方法。
getResponseCode(int):取得回應狀態碼。
setRequestMethod(String method):設定請求遠程HTTP服務器的請求方法。
usingProxy() :
記得在androidManifest.xml增加兩行(新增在package=下一行)。
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
第一行,讓app可以順利的使用網路存取資料。
第二行,開啟檢查網路狀態權限。
參考文獻
Android - Network Connection
Android網絡連接教程
Android – 判斷手機是否連上網路 (ConnectivityManager) (getState)
Android 檢查 網路狀態
Android檢查是否有網路連線
https://gnehcic.azurewebsites.net/android-%E6%AA%A2%E6%9F%A5%E6%98%AF%E5%90%A6%E6%9C%89%E7%B6%B2%E8%B7%AF%E9%80%A3%E7%B7%9A/
Android之Http通信——3.Android HTTP請求方式:HttpURLConnection(getInputStream)
https://read01.com/jEmdDx.html
Java的網路程式設計(InputStream)
https://litotom.com/2016/05/11/java%E7%9A%84%E7%B6%B2%E8%B7%AF%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88/
Java 複習筆記 : 檔案處理(BufferedReader)
http://yhhuang1966.blogspot.tw/2014/03/java_3503.html
Bufferedreader BufferedWriter
http://blog.xuite.net/hcy_java/blog/314827993-Bufferedreader+BufferedWriter
Android學習筆記21:ImageView獲取網络圖片(getRequestMethod)
http://fanli7.net/a/JAVAbiancheng/JAVAzonghe/20130202/302034.html
Android check internet connection 檢查網路連線狀態
Android之Http通信——3.Android HTTP請求方式:HttpURLConnection(getInputStream)
https://read01.com/jEmdDx.html
Java的網路程式設計(InputStream)
https://litotom.com/2016/05/11/java%E7%9A%84%E7%B6%B2%E8%B7%AF%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88/
Java 複習筆記 : 檔案處理(BufferedReader)
http://yhhuang1966.blogspot.tw/2014/03/java_3503.html
Bufferedreader BufferedWriter
http://blog.xuite.net/hcy_java/blog/314827993-Bufferedreader+BufferedWriter
Android學習筆記21:ImageView獲取網络圖片(getRequestMethod)
http://fanli7.net/a/JAVAbiancheng/JAVAzonghe/20130202/302034.html
android 檢查網路連線
【分享】- 如何在 Android 程式中加入不會因網路問題而出現錯誤網頁視窗的 AdSense Mobile 服務?
Android─偵測網路連線狀態by ConnectivityManager
Android - 取得手機 wifi 連線狀態
Android藍牙開發
處理程序和執行緒
Android Detect Internet Connection Status Tutorial - Androidhive
Check Internet Connectivity
沒有留言:
張貼留言