我有问题。当我运行我的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服务器
答案 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" />