首页 > 解决方案 > 如何修复“无法应用 ContextCompat 中的 startActivity()?”

问题描述

我正在使用 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的新手,欢迎任何帮助。

标签: javaandroidandroid-intentgoogle-cloud-vision

解决方案


请替换这个:

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);

推荐阅读