【发布时间】:2016-11-28 08:10:12
【问题描述】:
我编写了一些应用程序(marshmallow sdk),在某些操作中,我需要使用默认设备帐户发送带有一些附加文件的邮件,以便了解用户。
当我尝试使用我的发送操作(附加代码)时,我得到一些对话框,告诉我选择我想用于此共享此文件的应用程序。
我想以某种方式跳过此对话框,只是完成此发送操作,而不让使用此应用程序的用户选择 gmail 并按“发送”按钮。
(就像在后台发送邮件一样)
代码:
public void SendToMail(String filePath)
{
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("text/plain");
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"somemailAddress@gmail.com"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Reminder");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Null");
File file = new File(filePath);
if (!file.exists() || !file.canRead()) {
return;
}
Uri uri = Uri.fromFile(file);
emailIntent.putExtra(Intent.EXTRA_STREAM, uri);
final PackageManager pm = _context.getApplicationContext().getPackageManager();
final List<ResolveInfo> matches = pm.queryIntentActivities(emailIntent, 0);
ResolveInfo best = null;
for(final ResolveInfo info : matches)
if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail"))
best = info;
if (best != null)
emailIntent.setClassName(best.activityInfo.packageName, best.activityInfo.name);
_context.startActivity(emailIntent);
}
【问题讨论】:
-
如果用户使用的是 Inbox 而不是 Gmail?应用!= 帐户。
-
@lal 和 @Tanishq Sharma - 你给我的链接没有解决问题,因为用户仍然需要按下“发送”按钮。
-
如果要发送直邮,可能需要使用我们自己的服务器端邮件发送机制。
标签: android