我試圖構建一個使用條形碼閱讀器的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