我正在创建一个应用程序,它可以读取网站的某个部分并将其发布到屏幕上。该应用程序目前在我的Android模拟器中工作,但当我将它传输到我的Galaxy S2时,它似乎根本无法访问该网站。
package com.example.beam;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;
import org.apache.http.HttpResponse;
import org.apache.http.client.*;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.support.v4.app.NavUtils;
public class MainActivity extends Activity {
String current = null;
Button check;
TextView text;
TextView url;
String[] lines = new String[12];
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
check = (Button) findViewById(R.id.checkstatus);
text = (TextView) findViewById(R.id.textView1);
url = (TextView) findViewById(R.id.url);
String[] lines = new String[12];
check.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
// Attempt to the read the source from a website.
String bodyHtml = "null";
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://www.spring8.or.jp/ext/ja/status/text.html");
ResponseHandler<String> resHandler = new BasicResponseHandler();
try {
bodyHtml = httpClient.execute(httpGet, resHandler);
} catch (Exception e) {
e.printStackTrace();
}
double current = 0;
try{
String derp = bodyHtml.substring(bodyHtml.lastIndexOf("mA") - 5, bodyHtml.lastIndexOf("mA"));
current = Double.parseDouble(derp);
}
catch(Exception e){
}
url.setText(current + " mA");
}
});
}
}
如果编码有点糟糕和混乱,我很抱歉,我对这一切都很陌生。我该如何解决这个问题?谢谢
另外,我很确定我已经在清单中正确设置了权限。
答案 0 :(得分:1)
试试这个......
保持UI工作在UI线程和非UI工作在非UI线程上是一个很好的做法,但从HONEYCOMB Android版本的发布成为法律......可能导致错误。
所以你可以做到以下......
在单独的线程上执行Http,然后使用 Handler 将值放在UI上,Handler保留创建它的线程的引用。
< / LI>您可以使用专为Android设计的 AsyncTask 来实现 UI和非UI线程。
注意:
请检查AndroidManifest中的互联网权限,虽然我知道你已经完成了,因为应用程序在模拟器上运行....但仍然..再次检查它没有害处。