Processo para ao entrar em "onClick"

Tenho o seguinte código:

[code]package pegaip.pacote;

import java.net.InetAddress;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Pega_IPActivity extends Activity {
/** Called when the activity is first created. */
EditText edtEndereco;
Button btnGerar;
TextView txtIP;

InetAddress inet = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    edtEndereco = (EditText) findViewById(R.gerar.edtEndereco);
    btnGerar = (Button) findViewById(R.gerar.btnPegar);
    txtIP = (TextView) findViewById(R.gerar.txtIP);
    
    btnGerar.setOnClickListener(new View.OnClickListener() {
        
        public void onClick(View arg0) {
            try {
                inet = InetAddress.getByName(edtEndereco.getText().toString());
            } catch (UnknownHostException ex) { 
                txtIP.setText("Servidor não encontrado!");
            }
            txtIP.setText("IP: " + inet.getHostAddress());
            
        }
    });
}

}
[/code]

O que o app faz: solicita o endereço de um site e pega o IP deste site. O programa compila e roda, no entanto, ao clicar no botão para pegar o IP aparece a seguinte mensagem no emulador:

the application Pega_IP (process pegaip.pacote)has stopped unexpectedly. Please try again

Alguém aí sabe como eu resolvo isso?

PS: Procurei no Google à respeito desta mensagem, encontrei referências, mas nada satisfatório.

Obrigado!

Qual o log do erro?

Onde eu vejo este log, Marky? Você está falando do output na IDE?

Uma coisa importante que eu esqueci de dizer: Se eu colocar “localhost”, ele me retorna 127.0.0.1, ou seja, em rede local funciona. Eu coloquei a permissão como Dangerous, no arquivo AndroidManifest.xml, mas o problema persiste.

No Eclipse, vá em Window > Show view > Other… vá em Android > Logcat, esse é log do device.

Beleza, o log é esse:
http://pastebin.com/r3NKqUWv

Obrigado.

Tenta colocar em um Thread().

Será que isso resolveria? Este mesmo código, adaptado para J2SE, funciona perfeitamente.

Em android quando você faz uma solicitação para internet você precisa colocar em Thread() e também informar ao AndroidManifest.xml que você “permite” o acesso dando um “uses permission”.

Se não o Dalvik finaliza a Activity.

[quote=felipebonezi]Em android quando você faz uma solicitação para internet você precisa colocar em Thread() e também informar ao AndroidManifest.xml que você “permite” o acesso dando um “uses permission”.

Se não o Dalvik finaliza a Activity.[/quote]

Entendi. Vou tentar fazer isso amanhã. Obrigado por esclarecer.

[quote=felipebonezi]Em android quando você faz uma solicitação para internet você precisa colocar em Thread() e também informar ao AndroidManifest.xml que você “permite” o acesso dando um “uses permission”.

Se não o Dalvik finaliza a Activity.[/quote]

Como assim é necessario colocar em uma Thread para pegar coisas da internet? Eu tenho alguns processos sincronos que fazem isso sem precisar de outras threads.

Mas a permission no AndroidManifest é necessaria sim.

[quote=Marky.Vasconcelos][quote=felipebonezi]Em android quando você faz uma solicitação para internet você precisa colocar em Thread() e também informar ao AndroidManifest.xml que você “permite” o acesso dando um “uses permission”.

Se não o Dalvik finaliza a Activity.[/quote]

Como assim é necessario colocar em uma Thread para pegar coisas da internet? Eu tenho alguns processos sincronos que fazem isso sem precisar de outras threads.

Mas a permission no AndroidManifest é necessaria sim.[/quote]

Geralmente quando coloco uma solicitação na net PESADA coloco em Thread() para não travar a aplicação podendo gerar algum erro…

Pode crer, se não ele não sabe para quem mandar os eventos por que os componentes não respondem.