Android:互联网在模拟器中运行,但在手机上运行

时间:2012-06-28 12:03:49

标签: java android android-emulator

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


        }
    });
}

}

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

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

1 个答案:

答案 0 :(得分:1)

试试这个......

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

所以你可以做到以下......

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

    < / LI>
  2. 您可以使用专为Android设计的 AsyncTask 来实现 UI和非UI线程。

  3. 注意:

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