Намерение Android использовать Google Goggles всегда приводит к результату RESULT_CANCELLED. Как мне вернуть законный результат моей активности?

#android #android-intent #android-activity #google-goggles

#Android #android-намерение #android-активность #google-goggles

Вопрос:

Итак, я пытался использовать намерение Google Goggles, чтобы я мог использовать сканер в качестве устройства распознавания. Я использовал следующий код в своей деятельности:

 Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        //intent.setPackage("com.google.zxing.client.android");
        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        Log.d("TAG", "start goggles!");
        startActivityForResult(intent, 0);    
  

А что касается моего onActivityResult, это выглядит следующим образом :

 public void onActivityResult(int requestCode, int resultCode, Intent intent) {

        super.onActivityResult(requestCode, resultCode, intent);
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {
                String contents = intent.getStringExtra("SCAN_RESULT");
                String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
                Log.d("TAG", "result back!" contents);
                Toast.makeText(getBaseContext(), contents, Toast.LENGTH_LONG).show();

            } else if (resultCode == RESULT_CANCELED) {
                Toast.makeText(getBaseContext(), "CANCELLED", Toast.LENGTH_LONG).show();
                // TODO: Handle cancel
            }
        }
    }
  

Приведенный выше код успешно запускает другое приложение, но не возвращает результат и всегда заканчивается в RESULT_CANCELLED resultCode. (Я использую кнопку «Назад», чтобы вернуться в свое приложение, я делаю что-то не так здесь?)

Буду признателен за любую помощь. Спасибо!

Ответ №1:

Ну, если вы используете кнопку «Назад», чтобы вернуться в свое приложение, конечно, это resultCode произойдет RESULT_CANCELED , потому что вы буквально отменили запрос Goggles. Если вы сканируете действительный qr-код, находясь в Google, он должен автоматически закрыться и вернуться к вашей активности с помощью RESULT_OK .

Обратите внимание, что при первом запуске Goggles будет показано руководство и запрошены некоторые начальные настройки. Когда это появится, оно не вернется в ваше приложение после сканирования qr-кода.

Комментарии:

1. Нет, я не получаю первоначальное приглашение (которое появляется при первом запуске). Что я получаю, так это то, что Goggles успешно сканирует мой текст, но затем он отображает результат точно так же, как если бы он был запущен самостоятельно… он автоматически не возвращается в мое приложение. Хорошо, я только что понял, что это отлично работает с реальным QR-кодом, но не со сканированием текста. Я предполагаю, что моя проблема в том, что мне нужен правильный режим сканирования текста. Кажется, я не могу найти никакой документации по API для goggles.

2. Вы можете посмотреть возможные режимы в исходном коде приложения zxing, но, по-видимому, оно не поддерживает сканирование только текста … github.com/zxing/zxing/blob/master/android/src/com/google/zxing / … … Возможно, у Goggles есть дополнительные режимы, я все еще ищу это.

3. Ничего не найдено… Единственное, что я могу придумать, что вы могли бы попробовать, это удалить scan_mode, чтобы сканировать все, и в намерении результата проверить этот атрибут: intent.getStringExtra("SCAN_RESULT_FORMAT"); и посмотреть, что вы получите при сканировании текстов. Возможно, это помогает.

4. Да, я тоже нашел исходный код для zxing, и удаление SCAN_MODE и замена его SCAN_FORMATS не изменили его поведение. Есть идеи, что еще я могу попробовать?

5. вообще не устанавливайте SCAN_MODE или SCAN_FORMAT и проверяйте в своем приложении, что было отсканировано … возможно, вы сможете получить тип сканирования текста из результата с помощью intent.getStringExtra("SCAN_RESULT_FORMAT");