Библиотека zxing использовалась в приложении таким образом, что из основного действия нажимается кнопка, сканирование запускается с использованием initiateScan()
. Когда штрих-код найден, вызывается onActivityResult()
основного действия, где вызывается IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
и обработка результата продолжается. Это все отлично работает.
Я добавил следующий код в onCreate()
основного действия, но когда я запускаю код из ярлыка, onActivityResult()
не запускается.
// called from within main activity's `onCreate()` method
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Intent[] intentArray = new Intent[2];
intentArray[0] = getIntent(); // application's main activity
intentArray[1] = new IntentIntegrator(this).createScanIntent(); // zxing library
ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);
ShortcutInfo scanShortcut = new ShortcutInfo.Builder(this, "scanQr")
.setShortLabel("Scan QR Code")
.setLongLabel("Scan QR Code")
.setIcon(Icon.createWithResource(this, R.drawable.ic_scan_qr_black_24dp))
.setIntents(intentArray)
.build();
shortcutManager.setDynamicShortcuts(Arrays.asList(scanShortcut));
}
Что я читаю о ярлыках, если вы задали несколько намерений, запускается только последнее. И это, похоже, работает: на экране запуска устройства, когда ярлык запускается из-за длительного нажатия на значок запуска приложения, я вижу активность сканирования. Все хорошо. Но проблема заключается в том, что после захвата штрих-кода процесс сканирования заканчивается и IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
никогда не запускается.
Цель состоит в том, чтобы запустить сканирование с помощью ярлыка и обработать его так, как если бы была нажата кнопка основного действия.