【问题标题】:How to solve android email intent problem?如何解决android电子邮件意图问题?
【发布时间】:2019-10-29 20:08:42
【问题描述】:

我在使用 android 电子邮件意图时遇到问题.....我需要打开电子邮件应用程序,以便用户可以为我的应用程序提供反馈。当我使用它时它不会打开..抛出 ActivityNotFoundException .. ...我正在使用我的手机,而不是模拟器,我的手机中有电子邮件和 gmail 应用程序。 帮我解决?? 这是我的代码:

    Intent intent= new Intent(Intent.ACTION_SENDTO);
    intent.setData(Uri.parse("mailto:"));
    intent.setType("text/plain");
    String[] mail={"someone@gmail.com"};
    intent.putExtra(Intent.EXTRA_SUBJECT,"");
    intent.putExtra(Intent.EXTRA_TEXT,"");
    intent.putExtra(Intent.EXTRA_EMAIL,mail);
    startActivity(intent);

感谢所有 cmets :)

【问题讨论】:

    标签: java android email android-intent


    【解决方案1】:

    对于您的情况,ActivityNotFoundException 很可能意味着在您的手机中,您的设备上没有安装任何默认的电子邮件应用程序电子邮件应用程序,例如 Gmail,因此当您启动 Intent 时,您会收到此错误。

    您可以尝试像这样处理该异常:

    try {
        startActivity(Intent.createChooser(i, "Send mail"));
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(Activity.this, "no email app",Toast.LENGTH_SHORT).show();
    }
    

    【讨论】:

      【解决方案2】:

      来自 android docs,Intent 允许您通过在 Intent 中描述您想要执行的简单操作(例如“查看地图”或“拍照”)在另一个应用程序中启动 Activity目的。这种类型的意图称为隐式意图,因为它不指定要启动的应用程序组件,而是指定一个操作并提供一些数据来执行该操作。

      当您调用 startActivity() 或 startActivityForResult() 并向其传递隐式 Intent 时,系统会将 Intent 解析为可以处理 Intent 的应用并启动其对应的 Activity。如果有多个应用程序可以处理该意图,系统会向用户显示一个对话框以选择要使用的应用程序。`

      因此,在您的情况下,系统找不到应用程序来解决 @Tamir 提到的意图。

      有关更多信息,请查看此 Stack Overflow 帖子:Send Email Intent

      【讨论】:

        【解决方案3】:

        它对我有用:

              String[] recipients;
                    Intent intent = new Intent(Intent.ACTION_SEND);
                        recipients = new String[]{"someone@gmail.com"};    
        
                    intent.putExtra(Intent.EXTRA_EMAIL, recipients);
                    intent.setType("text/html");
                    intent.setPackage("com.google.android.gm");
                   try {
                    activity.startActivity(Intent.createChooser(intent, "Send"));
              }
                 catch (android.content.ActivityNotFoundException ex) {
            Toast.makeText(Activity.this, "no email app",Toast.LENGTH_SHORT).show();
        }
        

        【讨论】:

        • plain/text 不是有效的 MIME 类型。不要假设com.google.android.gm.ComposeActivityGmail 总是正确的活动来入侵另一个应用程序,更不用说导出的活动了。不要假设所有用户都想使用 Gmail。不要将无效的Uri 放入Intent,并且test@gmail.com 不是有效的UriACTION_VIEW 不支持 EXTRA_EMAILEXTRA_SUBJECTEXTRA_TEXT
        猜你喜欢
        • 2012-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 2021-05-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多