1

我正在制作一个应用程序,它可以读取网站的某个部分并将其发布到屏幕上。该应用程序目前在我的 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");


        }
    });
}

}

如果编码有点糟糕和混乱,我很抱歉,我对这一切都很陌生。我该如何解决这个问题?谢谢

另外,我很确定我已经在清单中正确设置了权限。

4

1 回答 1

1

试试这个....

保持 UI 在 UI 线程上工作和非 UI 在非 UI 线程上工作是一个很好的做法,但是从 HONEYCOMB Android 版本的发布开始,这成为了一个法律……这可能会导致错误。

因此,您可以执行以下操作....

  1. 在单独的线程上做 Http,然后使用Handler将值放在 UI 上, Handler 保持创建它的线程的引用。

  2. 您可以使用专为 android 设计的AsyncTask在 UI 和非 UI 线程之间进行同步。

笔记:

请检查 AndroidManifest 中的 Internet 权限,虽然我知道你已经这样做了,因为应用程序在模拟器上运行....但仍然..再次检查它没有害处。

于 2012-06-28T12:44:38.637 回答