当试图从扫描仪加载信息时,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,也尝试改变更新变量的时刻。但问题还是一样。阅读器独立工作,服务器/用户独立工作。
我需要显示扫描结果,并且过去被称为变量。
谢谢你的帮助
不能在主(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 !