0

我正在使用安卓版本为 4.1.1 的安卓手机。.它工作正常。我可以通过 TCP/IP 将字符串数据从这部手机传输到我的 PC 中的 VB 应用程序。但是,如果我使用我的另一部手机,Android 版本 4.4.4 kitkat .. 我仍然可以正确安装 .apk 文件并运行它..但它不会发挥其功能,我的另一部手机 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提前谢谢。

4

1 回答 1

1

您不能在单击处理程序中创建套接字连接。您将遇到 NetworkOnMainThreadException。将此类代码放在线程或 AsyncTask 中。

您的代码也不应该在 4.1.1 上运行。

于 2015-12-20T11:21:59.910 回答