Ну, я пытаюсь реализовать интеграцию zxing с моим Android-приложением. В моем приложении есть MainActivity. В этой MainActivity я использую кнопку для выполнения первого блока кода ниже. Но каждый раз, когда выполняется первый блок кода и приложение, читайте QR-код, я получаю в качестве resultCode значение RESULT_CANCELED во втором блоке. Второй блок выполняется, как только открывается активность ZXing. Что я делаю неправильно?
Первый блок кода
Intent intent1 = new Intent("com.google.zxing.client.android.SCAN");
intent1.setPackage("com.google.zxing.client.android");
intent1.putExtra("SCAN_MODE", "ONE_D_MODE");
startActivityForResult(intent1, 0);
Второй блок кода
public void onActivityResult(int requestCode, int resultCode, Intent intent2) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents2 = intent2.getStringExtra("SCAN_RESULT");
String format2 = intent2.getStringExtra("SCAN_RESULT_FORMAT");
EditText assetMon1 = (EditText) findViewById(R.id.assetMon1);
assetMon1.setText(contents2);
} else if (resultCode == RESULT_CANCELED) {
// Every time I receive this code
}
}
}
Следуйте примерному коду, представленному в проекте под android-integration
. Просто вызовите методы этого класса, а не отлаживайте собственную версию. Я думаю, что использование requestCode 0, скорее всего, будет проблемой, но я предполагаю. Он должен быть своего рода уникальным идентификатором для запроса. Но 0 может быть использовано кем-то другим, и вы действительно слышите ответ на что-то еще.
У меня очень похожий код в моем приложении. Единственное существенное отличие заключается в том, что у меня есть "PRODUCT_MODE" вместо "ONE_D_MODE".