我正在使用此代码从网上获取更改日志。
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更新后,我什么都没得到! 没有对话,没有回应,没有任何东西!救命! :/
答案 0 :(得分:15)
我知道在android 3.0中,主线程上的网络连接是不允许的。
StrictMode自动开启。 我确定它与4.0相同。
要解决此问题,您必须在单独的线程上执行网络连接...例如,使用AsyncTask
。
阅读关于此主题的博客文章:
答案 1 :(得分:0)
那么,你为什么不使用WebClient? (用法:https://gist.github.com/2906703),你真的不需要搞乱StrictMode线程策略。如果谷歌认为改变它很重要,我是谁不同意。