0

我有个问题。当我运行我的 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 服务器发送短信

4

2 回答 2

4

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

于 2012-08-23T18:08:32.183 回答
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" />
于 2012-08-23T18:40:31.553 回答