不幸的是已经停止了android

时间:2012-08-23 18:05:44

标签: java android sockets android-layout android-emulator

我有问题。当我运行我的Android程序时,我有一个错误:“不幸的是已经停止了android”。为什么我在运行应用程序时看到此错误?听到的是我的档案:

enter code here
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;



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

public class SimpleClientActivityActivity extends Activity {

private Socket client;
private PrintWriter printwriter;
private EditText textField;
private Button button;
private String messsage;

@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);

 //textField = (EditText) findViewById(R.id.editText1); //reference to the text field
  button = (Button) findViewById(R.id.button1);   //reference to the send button

  //Button press event listener
  button.setOnClickListener(new View.OnClickListener() {

   public void onClick(View v) {

   //messsage = textField.getText().toString(); //get the text message on the text      field
    //textField.setText("");      //Reset the text field to blank

  try {

 client = new Socket("10.0.2.2", 4444);  //connect to server
 printwriter = new PrintWriter(client.getOutputStream(),true);
 printwriter.write(messsage);  //write the message to output stream

 printwriter.flush();
 printwriter.close();
 client.close();   //closing the connection

  } catch (UnknownHostException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  }
 });

 }
}

我想用我的adnroid客户端将短信发送到PC服务器

2 个答案:

答案 0 :(得分:4)

可能是因为您正在主线程上进行网络操作。查看您的logcat,将会有红色的信息。

答案 1 :(得分:1)

试试这个

 new Thread(){
        @Override
        public void run(){
            // your onClick code here
        }
    }.start();

您也可以使用AsyncTask进行网络操作

public class YourTask extends AsyncTask{

    private Context context;
    private ProgressDialog dialog;

    public SplitCueTask(Context context) {
        this.context = context;
        this.dialog = new ProgressDialog(context);           
    }

    @Override
    protected void onPreExecute() {
        dialog.setMessage(getResources().getString(R.string.loading));
        dialog.show();

    }

    @Override
    protected Boolean doInBackground(Object... objects) {
        // you logic here, return result
        return someObject.
    }


    @Override
    protected void onPostExecute(Object someObject) {
        if (dialog.isShowing())
             dialog.dismiss()
        // handle result here, post it on UI or something else
    }


}

运行任务

new YourTask(context).execute();    

并且不要忘记将INTERNET PERMISSION添加到AndroidManifest

<uses-permission android:name="android.permission.INTERNET" />