Как получить результаты штрих-кода ZXING при вызове из ярлыка - PullRequest
0 голосов
/ 29 мая 2019

Библиотека 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) никогда не запускается.

Цель состоит в том, чтобы запустить сканирование с помощью ярлыка и обработать его так, как если бы была нажата кнопка основного действия.

...