安卓開發網路相關bug解決方案
阿新 • • 發佈:2018-12-09
兩個bug:
1: android.os.NetworkOnMainThreadException
原因:因為main執行緒要處理UI,預設不能使用網路導致假死
Android這個設計是為了防止網路請求時間過長而導致介面假死的情況發生。解決方案有兩個,一個是使用StrictMode,二是使用執行緒來操作網路請求。
2: java.lang.SecurityException: Permission denied (missing INTERNET permission?)
原因: 安卓程式的網路訪問需要設定許可權的
解決方案
- // Android 4.0 之後不能在主執行緒中請求HTTP請求(HttpRequest 方法類要自己定義)
new Thread(new Runnable(){ @Override public void run() { //傳送GET請求 String s=HttpRequest.sendGet("http://localhost:6144/Home/RequestGetString", "key=123&v=456"); System.out.println(s); //傳送 POST 請求 String sr=HttpRequest.sendPost("http://localhost:6144/Home/RequestPostString", "key=123&v=456"); System.out.println(sr); } }).start();
2:在AndroidManifest.xml中新增如下行,允許網路訪問許可權就可以了。
<uses-permission android:name="android.permission.INTERNET" />
參考文獻:
https://blog.csdn.net/llixiangjian/article/details/72910557
https://blog.csdn.net/hack8/article/details/28038541