2012-06-28 3 views
1

Я делаю приложение, которое читает определенную часть веб-сайта и отправляет его на экран. Приложение в настоящее время работает в моем эмуляторе Android, но когда я переношу его в свою галактику S2, он, похоже, вообще не обращается к веб-сайту.Android: Интернет работает в эмуляторе, но не на моем телефоне

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

, пожалуйста, напишите logcat. –

ответ

1

Попробуйте это ....

Сво хорошая практика, чтобы держать работу пользовательского интерфейса на потоке пользовательского интерфейса и работы Non-UI на Non-UI потока, но это стало LAW от выпуска версии СОТОВОЙ Android .... Это может быть причиной ошибки.

Таким образом, вы можете сделать следующее ....

  1. ли НТТР в отдельном потоке, а затем поместить значение в пользовательском интерфейсе с помощью Handler, Handler Держите ссылку нити в который он был создан.

  2. Вы можете использовать AsyncTask, который специально разработан для андроида, чтобы сделать синхронизацию между UI и Non-UI потока.

Примечание:

Пожалуйста, проверьте интернет-разрешение в AndroidManifest, хотя я знаю, что вы сделали это, вызвать приложение побежал на эмуляторе .... но still..no вреда в проверке его снова ,

+0

Спасибо, я нашел пример в интернете, который использовал AsyncTask, и это сработало! – user1147964