为什么我的 android TCP 客户端应用程序无法在其他手机上运行?
Why my android TCP client app wont work on other phones??
我正在使用 android phone 和 android 版本 4.1.1。
.IT 工作正常。我可以通过 TCP/IP 将此 phone 中的字符串数据传输到我 PC 中的 VB 应用程序。但是,如果我使用我的另一个 phone,带有 android 版本 4.4.4 kitkat ..我仍然可以正确安装 .apk 文件并 运行 它..但它不会执行其功能,我的另一个 phone 4.0.1 也是如此。
这是我的代码:
XML 文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="hello"
/>
<EditText
android:id="@+id/textout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/buttonSend"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Send"
/>
<TextView
android:id="@+id/textin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
JAVA 文件:
public class MainActivity extends Activity {
EditText textOut;
TextView textIn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textOut = (EditText)findViewById(R.id.textout);
Button buttonSend = (Button)findViewById(R.id.buttonSend);
textIn = (TextView)findViewById(R.id.textin);
buttonSend.setOnClickListener(buttonSendOnClickListener);
}
Button.OnClickListener buttonSendOnClickListener
= new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Socket socket = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;
try{
// Creating new socket connection to the IP (first parameter) and its opened port (second parameter)
Socket s = new Socket("192.168.1.3", 65535);
// Initialize output stream to write message to the socket stream
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String outMsg = "";
outMsg = textOut.getText().toString();
// Write message to stream
out.write(outMsg);
// Flush the data from the stream to indicate end of message
out.flush();
// Close the output stream
out.close();
// Close the socket connection
s.close();
}
catch(Exception ex){
//:TODO Handle exceptions
}
}};
}
与API等级有关系吗? minsdkversion 和 targetsdkversion?
请帮助我..我快疯了。哈哈 XD 在此先感谢。
您不能在单击处理程序中创建套接字连接。您将遇到 NetworkOnMainThreadException。将此类代码放在线程或 AsyncTask 中。
您的代码也不能在 4.1.1 上运行。
我正在使用 android phone 和 android 版本 4.1.1。 .IT 工作正常。我可以通过 TCP/IP 将此 phone 中的字符串数据传输到我 PC 中的 VB 应用程序。但是,如果我使用我的另一个 phone,带有 android 版本 4.4.4 kitkat ..我仍然可以正确安装 .apk 文件并 运行 它..但它不会执行其功能,我的另一个 phone 4.0.1 也是如此。
这是我的代码:
XML 文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="hello"
/>
<EditText
android:id="@+id/textout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/buttonSend"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Send"
/>
<TextView
android:id="@+id/textin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
JAVA 文件:
public class MainActivity extends Activity {
EditText textOut;
TextView textIn;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textOut = (EditText)findViewById(R.id.textout);
Button buttonSend = (Button)findViewById(R.id.buttonSend);
textIn = (TextView)findViewById(R.id.textin);
buttonSend.setOnClickListener(buttonSendOnClickListener);
}
Button.OnClickListener buttonSendOnClickListener
= new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Socket socket = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;
try{
// Creating new socket connection to the IP (first parameter) and its opened port (second parameter)
Socket s = new Socket("192.168.1.3", 65535);
// Initialize output stream to write message to the socket stream
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String outMsg = "";
outMsg = textOut.getText().toString();
// Write message to stream
out.write(outMsg);
// Flush the data from the stream to indicate end of message
out.flush();
// Close the output stream
out.close();
// Close the socket connection
s.close();
}
catch(Exception ex){
//:TODO Handle exceptions
}
}};
}
与API等级有关系吗? minsdkversion 和 targetsdkversion? 请帮助我..我快疯了。哈哈 XD 在此先感谢。
您不能在单击处理程序中创建套接字连接。您将遇到 NetworkOnMainThreadException。将此类代码放在线程或 AsyncTask 中。
您的代码也不能在 4.1.1 上运行。