Как я могу исправить "startActivity () в ContextCompat не может быть применен к?" - PullRequest
0 голосов
/ 15 мая 2019

Я использую Google Vision OCR, чтобы получить электронное письмо с визитной карточки (графическое действие OCR) и отправить его в пункт назначения «Кому» в операции SendEmail. Мой журнал показывает, что текст электронной почты обнаружен.

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

Это OcrGraphic деятельность

List<Line> lines = (List<Line>) text.getComponents();
        for(Line elements : lines) {
            float left = translateX(elements.getBoundingBox().left);
            float bottom = translateY(elements.getBoundingBox().bottom);
            if (elements != null && elements.getValue() != null) {


                if (elements.getValue().matches("^[_A-Za-z0-9-\\\\+]+(\\\\.[_A-Za-z0-9-]+)*@\"\n" +
                        "\t\t+ \"[A-Za-z0-9-]+(\\\\.[A-Za-z0-9]+)*(\\\\.[A-Za-z]{2,})$") || elements.getValue().contains("@")) {
                    Log.e("elementsemail", elements.getValue());
                    String email;
                    email = elements.getValue();
                    cEmail = email;
                    Intent sendIntent = new Intent(this, SendEmail.class);
                    sendIntent.putExtra(Intent.EXTRA_EMAIL, cEmail);
                    startActivity(sendIntent);


                }

это моя активность отправки письма

private void sendMail(){

        Intent getIntent = getIntent();
        String recipientList = getIntent.getStringExtra(OcrGraphic.cEmail);;
        String[] recipients = recipientList.split(",");
        String subject = mEditTextSubject.getText().toString();
        String message = mEditTextMessage.getText().toString();

        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.putExtra(Intent.EXTRA_EMAIL, recipients);
        intent.putExtra(Intent.EXTRA_SUBJECT, subject);
        intent.putExtra(Intent.EXTRA_TEXT, message);
        intent.setType("message/rfc822");
        startActivity(Intent.createChooser(intent, "Choose an email client"));
    }

Я хочу отправить адрес электронной почты для активности SendEmail. Я новичок в Java и Android, любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

пожалуйста, замените это:

Intent sendIntent = new Intent(this, SendEmail.class);

с этим:

Intent sendIntent = new Intent(getApplicationContext(), SendEmail.class);

редактировать

Вам нужно передать контекст в конструкторе, подобном этому

private Context context;



OcrGraphic(GraphicOverlay overlay, TextBlock text, Context context) { 
       super(overlay); 
       this.context = context; 
       }

А потом

Intent sendIntent = new Intent(context, SendEmail.class);
0 голосов
/ 15 мая 2019

Я думаю, что вы проблема в том, как вы получаете дополнительные (EXTRA_EMAIL)
Заменить String recipientList = getIntent.getStringExtra(OcrGraphic.cEmail);; на String recipientList = getIntent.getStringExtra(Intent.EXTRA_EMAIL);

...