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

时间:2019-06-15 13:34:32

标签: java android email android-intent

我在使用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);

任何人和所有评论都表示赞赏:)

3 个答案:

答案 0 :(得分:0)

对于您而言,ActivityNotFoundException最有可能意味着您的手机上没有在Gmail等设备上安装任何默认的电子邮件应用程序电子邮件应用程序,因此在启动Intent时会收到此错误。 / p>

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

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

答案 1 :(得分:0)

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

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

因此,在您的情况下,系统无法像@Tamir所提到的那样找到用于解决意图的应用程序。

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

答案 2 :(得分:-2)

对我有用:

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