android - 为什么这个 Android Intent 找不到电子邮件应用程序?

标签 android gmail

我已经设置了一个电子邮件 Intent 并尝试启动它。代码如下:

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

但是,当我按下订单按钮时​​,“呃……没有电子邮件应用程序?” toast 出现了。我同时安装了 Inbox 和 Gmail,但是 Intent 似乎没有找到它们。为什么?

最佳答案

您可以使用此代码:

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

can you please explain what was wrong with my code?

我已经测试了您的代码,if (emailIntent.resolveActivity(getPackageManager()) != null) { 无法检查您的设备上是否有电子邮件 APP。我找到了这个方法并且工作正常:@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;
}

关于android - 为什么这个 Android Intent 找不到电子邮件应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32806787/

相关文章:

android - 引用模块中的资源

android - 如何将 Android 数据库与在线 SQL Server 同步?

python - 使用python从gmail下载一个csv文件

c# - 发送包含 html 的 smtp 邮件到 gmail 帐户

android - 我在哪里可以在谷歌上为 xoauth 注册 Android 应用程序以获得消费者 key 和消费者 secret

jquery - Gmail 页面加载类型

java - 为什么 if 语句在图像按钮中不起作用?

java - 如何在RecyclerView Adapter类中初始化正确的TextView?

c# - 在c#中发送邮件到gmail ssl问题

android - getLastKnownLocation 使用 GPS_PROVIDER 和 NETWORK_PROVIDER 返回 NULL