2015-09-27 144 views
1

我确实试图寻找答案,但获得了不满意的结果 - 如果有人发现一个完美的答案,请不要杀了我。电子邮件意图找不到电子邮件应用

所以,基本上,我已经设置了一个电子邮件的意图,并试图启动它。

public void emailSummary(String emailText, String name) { 
     Intent emailIntent = new Intent(Intent.ACTION_SEND); 
     emailIntent.setData(Uri.parse("mailto:")); 
     emailIntent.putExtra(Intent.EXTRA_EMAIL, ""); 
     emailIntent.putExtra(Intent.EXTRA_SUBJECT, "JustJava order for " + name); 
     emailIntent.putExtra(Intent.EXTRA_TEXT, emailText); 
     Log.v("MainActivity", "Finished setting up intent"); 
     if (emailIntent.resolveActivity(getPackageManager()) != null) { 
      startActivity(emailIntent); 
      Log.v("MainActivity", "Sharing the order summary to email"); 
     } else { 
      Log.d("MainActivity", "No email app installed!"); 
      Toast.makeText(MainActivity.this, "Uh...No email app?", Toast.LENGTH_SHORT).show(); 
     } 

但是,当我按下订单按钮时​​,“呃...没有电子邮件应用程序?”吐司出现了。我安装了Inbox和Gmail,并尝试了一系列组合(仅限Inbox,Inbox和Gmail,仅限Gmail),但发现Intent似乎并不在意。

有人帮忙吗?

回答

3

您可以使用此代码:

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
     "mailto",name, null)); 
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "SOME_SUBJECT"); 
emailIntent.putExtra(Intent.EXTRA_TEXT, emailText); 
try { 
startActivity(Intent.createChooser(emailIntent, "Send email...")); 
Log.v("MainActivity", "Sharing the order summary to email"); 
} 
catch (android.content.ActivityNotFoundException ex) { 
Log.d("MainActivity", "No email app installed!"); 
Toast.makeText(MainActivity.this, "Uh...No email app?", Toast.LENGTH_SHORT).show(); 
} 

能否请您解释一下什么是错我的代码?

我测试了您的代码,并且if (emailIntent.resolveActivity(getPackageManager()) != null) {不好检查您的设备上是否有任何电子邮件应用程序。我发现这种方法和工作正常:@Nitin answer

public static boolean isMailClientPresent(Context context){ 
Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/html"); 
final PackageManager packageManager = context.getPackageManager(); 
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, 0); 

if(list.size() == 0) 
    return false; 
else 
    return true; 
} 
+0

感谢您的解决方案!它完美地工作,并显示两个电子邮件应用程序。如果你有时间,你能解释我的代码有什么问题吗?再一次,谢谢! – ideaman924

+0

@ ideaman924检查我的编辑,如果它帮助你标记此答案为正确的:D –

+0

这一个似乎很好地工作。 +1 –

相关问题