gpt4 book ai didi

android - 即使安装了两个电子邮件客户端,使用 Intent.ACTION_SENDTO 也会产生错误 'No apps can perform this action"

转载 作者:行者123 更新时间:2023-11-29 19:01:42 25 4
gpt4 key购买 nike

我正尝试在 Android Studio 3.01 中使用电子邮件 Intent 。如果我使用 ACTION_SENDTO,我会收到错误消息 No apps can perform this action 即使同时安装了普通的 Android 电子邮件客户端和 Gmail 电子邮件应用程序。如果我使用 ACTION_SEND 代替 ACTION_SENDTO,则会显示一个屏幕,显示设备上的每个应用。

我的目标是直接调用默认电子邮件客户端,而不通过中间屏幕。我做错了什么?

我使用的代码是:

public void sendEmail(View view) {

Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
emailIntent.setData(Uri.parse("mailto:"));
emailIntent.setType("text/plain");

try {
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
finish();
Log.i("Email sent!", "");
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MapsActivityCurrentPlace.this,
"Email not installed.", Toast.LENGTH_SHORT).show();
}
}

已编辑

多亏了答案,最终的工作代码如下:

public void sendEmail(View view) {

Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
emailIntent.setData(Uri.parse("mailto:"));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Message...");

try {
startActivity(emailIntent);
finish();
Log.i("Email sent!", "");
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MapsActivityCurrentPlace.this,
"Email not installed.", Toast.LENGTH_SHORT).show();
}
}

最佳答案

首先,ACTION_SENDTO 不采用 MIME 类型。所以,去掉 setType()。这解决了两个问题:

  1. 您人为地限制了声称支持该 MIME 类型的应用

  2. setType() 清除您的 setData() 调用(setType(type)setDataAndType 相同(空,类型))

其次,如果您的目标是直接启动电子邮件客户端,请去掉 createChooser()

关于android - 即使安装了两个电子邮件客户端,使用 Intent.ACTION_SENDTO 也会产生错误 'No apps can perform this action",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48845499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com