2011-04-26 31 views
2

我正在使用下面的代码。问题是,当我在设备上运行此代码。它打开了一个Dailogbox,其中包含3个发送邮件的选项。 “POP,电子邮件,Gmail”等 通过点击gamil作曲家出现。 我只想直接显示Gamil邮件编辑器。而不是显示用于选择选项的dailog框。请帮帮我。如何在android中直接打开Gmail邮件编辑器?

Intent emailIntent = new Intent(Intent.ACTION_SEND); 
emailIntent.setType("text/html"); 

String subject = "My Subject"; 

emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); 

emailIntent.setType("text/html"); 

String title = "<p align='center'>" + storyTitle + "<br/>" + storyPubDate + "</p>"; 

String data = "<p> Sent From ABC APP Sent from my Android </p>"; 

      emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(title + data)); 
startActivity(Intent.createChooser(emailIntent, "Email:")); 

回答

0

您无法以编程方式绕过此弹出窗口。如果用户尝试访问该功能并且未配置GMail,会发生什么情况?

如果你想绕过只是删除所有其他电子邮件客户端,以便GMail是唯一可以发送/接收电子邮件。这样弹出窗口不会出现。

+0

是的,如果没有配置Gmail,肯定不会。但是,如何从我的设备中删除所有其他客户端? – Arslan 2011-04-26 11:32:16

5

不确定是否需要选择器。这是从我的应用程序之一...

  final Intent intent = new Intent(Intent.ACTION_SEND); 
      intent.setType("plain/text"); 
      intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); 
      intent.putExtra(Intent.EXTRA_SUBJECT, subject); 
      intent.putExtra(Intent.EXTRA_TEXT, content); 
      activity.startActivity(intent); 
+2

请注意,setType应该是text/plain而非plain/text(否则您将得到ActivityNotFoundException)。谢谢你的提示! – Andrew 2011-12-28 23:36:35

0

如果你在你的Android设备有几个邮件作曲家,你只是想为你的要求贾米勒作曲家开始,你必须

emailIntent.setClassName("xxxgamil composer package name xxx", "xxxgmail composer class name xxx"); 
    startActivity(emailIntent); 
+0

我找到了代码。它看起来像你的代码 Intent intent = new Intent(android.content.Intent.ACTION_SEND); intent.setType(“text/plain”); final PackageManager pm = getPackageManager(); final列表 matches = pm.queryIntentActivities(intent,0); ResolveInfo best = null; for(final ResolveInfo info:matches) if(info.activityInfo.packageName.endsWith(“.gm”)|| info.activityInfo.name.toLowerCase()。contains(“gmail”))best = info; if(best!= null) intent.setClassName(best.activityInfo.packageName,best.activityInfo.name); startActivity(intent); – Arslan 2011-04-26 11:39:26

+0

yes ....和Mojo的链接也很有用。 – 2011-04-27 03:36:33

+0

完成。但发送邮件后。它再次显示给对话框。我不想再打开它了? 有什么建议吗? – Arslan 2011-04-27 09:02:46

15

试试这个一个完美的

public void shareToGMail(String[] email, String subject, String content) { 
    Intent emailIntent = new Intent(Intent.ACTION_SEND); 
    emailIntent.putExtra(Intent.EXTRA_EMAIL, email); 
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); 
    emailIntent.setType("text/plain"); 
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, content); 
    final PackageManager pm = activity.getPackageManager(); 
    final List<ResolveInfo> matches = pm.queryIntentActivities(emailIntent, 0); 
    ResolveInfo best = null; 
    for(final ResolveInfo info : matches) 
     if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail")) 
      best = info; 
    if (best != null) 
     emailIntent.setClassName(best.activityInfo.packageName, best.activityInfo.name); 
    activity.startActivity(emailIntent); 
} 
+0

该答案适用于我。 – 2015-04-17 03:05:38

+0

谢谢1+。它为我工作。 – Ninja 2017-06-17 12:23:29

0

下面的代码为我工作。这将搜索电子邮件客户端,并直接启动新的电子邮件编辑器,并预先填写发送的值。如果没有电子邮件客户端存在,那么应该被捕获以避免崩溃。

好的思考这个解决方案是,在后面按它直接到你的应用程序屏幕的电子邮件目的是从哪里开始。

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:")); 
    intent.putExtra(Intent.EXTRA_SUBJECT, "Your Subject"); 
    intent.putExtra(Intent.EXTRA_TEXT, "The message"); 
    try { 
     startActivity(intent); 
    } catch (android.content.ActivityNotFoundException ex) { 
     Toast.makeText(this, "Mail account not configured", Toast.LENGHT_SHORT).show(); 
    } 

谢谢!

相关问题