当试图从扫描仪加载信息时,Android应用程序崩溃

本文关键字:Android 应用程序 崩溃 信息 加载 扫描仪 | 更新日期: 2023-09-27 18:05:26

我正在一个应用程序上工作,需要扫描条形码,然后通过TCPip端口发送到c#服务器。单个应用程序的工作,但当我试图读取变量,并用于显示和发送它(变量更新时扫描其完成)。得到这个错误:

FATAL EXCEPTION: main过程:com.example.android。miniclient, PID: 11351java.lang.RuntimeException:传递结果失败ResultInfo{谁=null,请求=0,结果=-1,数据=意图{= com.google.zxing.client.android行动。SCAN flg=0x80000(有附加)}}活动{com.example.android.miniclient/com.example.android.miniclient.MainActivity}:android.os.NetworkOnMainThreadException

来自Android App的代码,如下所示:

从reader app中读取的代码:

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {
                //get the extras that are returned from the intent
                contents = intent.getStringExtra("SCAN_RESULT");
                String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
                Toast toast = Toast.makeText(this, "Código Leido:" + contents + " Formato:" + format, Toast.LENGTH_LONG);
                //connectSocket("Hello");
                toast.show();
            }
        }
    }

TCPip通信代码:

 public  void connectSocket(String a){
        try {
            InetAddress serverAddr = InetAddress.getByName("192.168.1.223");
            Log.d("TCP", "C: Connecting...");
            Socket socket = new Socket(serverAddr, 11000);
            a="contents";
            String message = a;
            PrintWriter out = null;
            BufferedReader in = null;
            try {

代码更新显示白色代码读取:

public void updateTextView (String finalText) {

        textView4.setText(finalText);
        return;
    }

我已经准备好尝试从其他公共void更新TextView,也尝试改变更新变量的时刻。但问题还是一样。阅读器独立工作,服务器/用户独立工作。

我需要显示扫描结果,并且过去被称为变量。

谢谢你的帮助

当试图从扫描仪加载信息时,Android应用程序崩溃

不能在主(UI)线程上处理网络逻辑。正如你所看到的,你得到了这个networkonmainthreadeexception。

所以你不能在UI线程上运行这个方法:public void connectSocket(String a){

try {
    InetAddress serverAddr = InetAddress.getByName("192.168.1.223");
    Log.d("TCP", "C: Connecting...");
    Socket socket = new Socket(serverAddr, 11000);
    a="contents";
    String message = a;
    PrintWriter out = null;
    BufferedReader in = null;
    try {

在Android文档中阅读更多相关内容:https://developer.android.com/training/basics/network-ops/connecting.html AsyncTask

检查:

  • AsyncTask
  • HandlerThread
  • 等。

也有很多不错的库,如:

  • OkHttp
  • 凌空

BR !