我使用以下代碼從網絡上獲取changelog。
InputStream content = null;
try {
URL url = new URL("http://dreamhawk.blinkenshell.org/changelog.txt");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
content = urlConnection.getInputStream();
BufferedReader r = new BufferedReader(new InputStreamReader(content));
StringBuilder total = new StringBuilder();
String line;
String NL = System.getProperty("line.separator");
try {
while ((line = r.readLine()) != null) {
total.append(line + NL);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String page = total.toString();
Dialog dialog = new Dialog(Main.this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle(R.string.changelog);
dialog.setCanceledOnTouchOutside(true);
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setTextSize(13);
text.setText(page);
dialog.show();
} catch (Exception e) {
//handle the exception !
}
在Android 2.3或以下版本可以正常運行。但是只要ICS更新,就沒有dialog,沒有response,什麼都沒有,怎麼改變代碼?求教。
在 android 3.0中,主線程的網絡連接是不允許的。
StrictMode會自動打開。在 android 4.0也是一樣的。
要修復這些問題,你必須在一個單獨的線程中執行網絡連接。例如,使用一個AsyncTask。