@TILLhen

Как после сканирования автоматически открыть Activity?

В моем приложении есть сканер "zxing". Мне необходимо, чтобы после сканирования открывалась "activity_scanner".

Код сканера:
public class ScannerActivity extends AppCompatActivity {

    static final String ACTION_SCAN = "com.google.zxing.client.android.SCAN";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scanner);
    }

    /*Запуск сканера qr-кода:*/
    public void scanQR(View v) {
        try {

            /*Запускаем переход на com.google.zxing.client.android.SCAN с помощью intent:*/
            Intent intent = new Intent(ACTION_SCAN);
            intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
            startActivityForResult(intent, 0);
        } catch (ActivityNotFoundException anfe) {

            /*Предлагаем загрузить с Play Market:*/
            showDialog(ScannerActivity.this, "Сканнер не найден", "Установить сканер с Play Market?", "Да", "Нет").show();
        }
    }

    /*alert dialog для перехода к загрузке приложения сканера:*/
    private static AlertDialog showDialog(final Activity act, CharSequence title,
                                          CharSequence message,CharSequence buttonYes, CharSequence buttonNo) {
        AlertDialog.Builder downloadDialog = new AlertDialog.Builder(act);
        downloadDialog.setTitle(title);
        downloadDialog.setMessage(message);
        downloadDialog.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialogInterface, int i) {

                /*Ссылка поискового запроса для загрузки приложения:*/
                Uri uri = Uri.parse("market://search?q=pname:" + "com.google.zxing.client.android");
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                try {
                    act.startActivity(intent);
                } catch (ActivityNotFoundException anfe) {

                }
            }
        });
        downloadDialog.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialogInterface, int i) {
            }
        });
        return downloadDialog.show();
    }

    /*Обрабатываем результат, полученный от приложения сканера:*/
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {

                /*Получаем данные после работы сканера и выводим их в Toast сообщении:*/
                String contents = intent.getStringExtra("SCAN_RESULT");
                String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
                Toast toast = Toast.makeText(this, "Содержание: " + contents + " Формат: " + format, Toast.LENGTH_LONG);
                toast.show();
                startActivity(intent);










            }
        }
    }
}


"activity_scanner":
5aebc9f30eeab848245088.png
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
AlexanderYudakov
@AlexanderYudakov
C#, 1С, Android, TypeScript
В методе "onActivityResult()" аргумент "intent" предназначен только для возврата сканированного штрихкода.

Никаких "startActivity(intent)" с ним выполнять не нужно.

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

А если хотите запустить другую активити - делайте новый intent:

Intent next = new Intent(this, NextActivity.class);
startActivity(next);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы