我正在尝试在 Android Studio 3.01 中使用电子邮件意图。如果我使用,即使同时安装了原生 Android 电子邮件客户端和 Gmail 电子邮件应用程序,ACTION_SENDTO我也会收到错误消息。No apps can perform this action如果我使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
感谢答案,最终的工作代码如下所示:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
}
首先,ACTION_SENDTO不采用 MIME 类型。所以,摆脱setType(). 这解决了两个问题:
您人为地限制了声称支持该 MIME 类型的应用程序
setType()消除你的setData()呼叫(setType(type)与相同setDataAndType(null, type))
其次,如果您的目标是直接启动电子邮件客户端,请摆脱createChooser().
| 归档时间: |
|
| 查看次数: |
2153 次 |
| 最近记录: |