我试图构建一个使用条形码阅读器的android应用程序。Android活动完成方法杀死应用程序
该应用程序的工作流程是如下:
- 应用程序开始对在MainActivity按钮上显示
- 用户点击“MainActivity”和开始用于条形码扫描
- 用户扫描的第二活动条码,结果显示在MainActivity的文本字段中
主要活动以“startActivityForResult”启动条形码扫描活动,并侦听导致事件发生。
条形码扫描活动侦听条形码扫描库的扫描事件并使用“setResult”方法设置结果。
条码扫描活动自行关闭,并让主要活动读取值。
以上所有工作均按预期工作,但在onActivityResult事件处理之后,应用程序终止。
在日志文件中我只能找到一个通用的应用程序杀的消息
下面你可以找到代码段和注销。
主要Activity.java - 按钮点击onActivityResult:
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_VIEW);
i.setClass(getBaseContext(), BarcodeScannerActivity.class);
startActivityForResult(i, 100);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i("BARCODE_RESULT", data.getStringExtra("displayValue"));
super.onActivityResult(requestCode, resultCode, data);
TextView t = (TextView) findViewById(R.id.textView);
t.setText(data.getStringExtra("displayValue"));
Log.i("BARCODE_RESULT", data.getStringExtra("displayValue"));
}
条码活动 - OnBarcodeScan
public void onScanned(final Barcode barcode) {
Log.i("BARCODE", "Barcode scanned: " + barcode.displayValue);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getBaseContext(), "Barcode: " + barcode.displayValue, Toast.LENGTH_LONG).show();
Intent intent=new Intent();
intent.putExtra("displayValue",barcode.displayValue);
setResult(Activity.RESULT_OK, intent);
finish();
}
});
}
而且,最后但并非最不重要的,logcat中指出:
/** I/BARCODE: Barcode scanned: 8005200010448
/** I/BARCODE_RESULT: 8005200010448
/** I/BARCODE_RESULT: 8005200010448
/** I/Process: Sending signal. PID: 10012 SIG: 9
*编辑* 我刚刚发现设备的日志下面的例外,它已在SIG前右抛出:9日志
W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.huawei.lcagent.client.LogCollectManager.getUserType()' on a null object reference
W/System.err: at com.android.server.util.ReportTools.getUserType(ReportTools.java:86)
W/System.err: at com.android.server.util.ReportTools.isBetaUser(ReportTools.java:73)
W/System.err: at com.android.server.util.ReportTools.report(ReportTools.java:58)
W/System.err: at com.android.server.util.HwUserBehaviourRecord.appExitRecordInnerImpl(HwUserBehaviourRecord.java:125)
W/System.err: at com.android.server.util.HwUserBehaviourRecord.access$200(HwUserBehaviourRecord.java:32)
W/System.err: at com.android.server.util.HwUserBehaviourRecord$AsyUploadLooperThread$1.handleMessage(HwUserBehaviourRecord.java:255)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err: at android.os.Looper.loop(Looper.java:150)
W/System.err: at com.android.server.util.HwUserBehaviourRecord$AsyUploadLooperThread.run(HwUserBehaviourRecord.java:267)
预先感谢支持
马蒂亚
你的清单中是否使用了android:noHistory =“true”? –
为什么你在BarcodeActvity中将代码放入runOnUIThread()中?我认为这是造成问题的原因! –
嗨萨钦,我没有这个参数,我目前正在研究它。请查看我编辑的问题。这个错误是否可能与此设置有关?谢谢,Mattia **编辑**条码库发送异步线程中的响应,所以我添加了runOnUiThread,因为那 – Mattiag