如何解决android电子邮件意图问题?

Posted

技术标签:

【中文标题】如何解决android电子邮件意图问题?【英文标题】:How to solve android email intent problem? 【发布时间】: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 :)

【问题讨论】:

【参考方案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

以上是关于如何解决android电子邮件意图问题?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 12 的意图中包含电子邮件收件人信息?

如何解决`E Qt JAVA:找不到Surface 1-通过意图恢复到Qt @ android应用程序时出错?

无法通过电子邮件意图发送图像附件

如何从电子邮件意图中的回收站视图中获取两个文本视图?

用相机意图拍照以肖像模式android旋转图片

如何解决我在 Playstore 中被拒绝的 android 应用程序的问题?