作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正尝试在 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()
。这解决了两个问题:
您人为地限制了声称支持该 MIME 类型的应用
setType()
清除您的 setData()
调用(setType(type)
与 setDataAndType 相同(空,类型)
)
其次,如果您的目标是直接启动电子邮件客户端,请去掉 createChooser()
。
关于android - 即使安装了两个电子邮件客户端,使用 Intent.ACTION_SENDTO 也会产生错误 'No apps can perform this action",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48845499/
我是一名优秀的程序员,十分优秀!