- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
现在我正在使用 ACTION_SEND 但是有太多应用程序弹出窗口可供选择所以我想使用 ACTION_SENDTO,但我还需要将一些文件(.zip 或图像)附加到电子邮件正文以进行发送,我检查了几乎所有这个网站的评论,几乎没有帮助,任何人都可以帮助我吗?
最佳答案
这个回答有点晚了,但希望能帮助到和楼主有同样问题的人。
以下解决方案将解决 OP 的两个请求(1) 有选择地显示用户可以从中选择的应用 和 (2) 将多个文件附加到电子邮件正文 .
首先,我们将解决#(2)。这是对 Ravi Rupareliya 已发布的解决方案的扩展。假设我们需要附加两个名为“file01”和“file02”的文件。我们会这样做:
ArrayList<Uri> uriList = new ArrayList<Uri>();
Uri uri = Uri.fromFile(new File("file01"));
uriList.add(uri);
Uri uri02 = Uri.fromFile(new File("file02"));
uriList.add(uri02);
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("message/rfc822");
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, *"email title"*);
emailIntent.putExtra(Intent.EXTRA_TEXT, *"email body"*);
创建 Intent 时,使用 ACTION_SEND_MULTIPLE(而不是简单的 ACTION_SEND)表示您希望将多个文件附加到电子邮件中。此外,使用 Content-Type“message/rfc822”表示正文包含使用 RFC 822 标准格式化的封装消息(即您的“file01”和“file02”附件)。
其次,我们将处理#(1)。我建议您在设置模块中提供一个选项,允许用户从电子邮件应用程序列表中选择一个电子邮件客户端。选定的电子邮件客户端将是默认电子邮件,每当用户需要发送电子邮件时都会启动。此提议要求用户从电子邮件应用程序列表中选择仅一次,而不是每次发送电子邮件时。
可以通过以下方式获取此电子邮件应用程序列表:
Intent queryIntent = new Intent(ACTION_SENDTO);
queryIntent.setData(Uri.parse("mailto:"));
queryIntent.setType("message/rfc822");
List intentList = new ArrayList();
PackageManager packageManager = getPackageManager();
List resolveInfoList = packageManager.queryIntentActivities(queryIntent, 0);
for (int i = 0; i < resolveInfoList.size(); i++) {
ResolveInfo resolveInfo = (ResolveInfo) resolveInfoList.get(i);
String packageName = resolveInfo.activityInfo.packageName;
intentList.add(packageName);
}
获取列表后,创建一个模块让您的用户选择电子邮件应用程序(以及 packageName)。
接下来,对于上面#(1) 中的附件代码,我们只需添加以下行:emailIntent.setPackage(selectedPackageName);其中 selectedPackageName(字符串)是用户选择的电子邮件应用程序。
完整的电子邮件附件代码如下所示:
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("message/rfc822");
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, *"email title"*);
emailIntent.putExtra(Intent.EXTRA_TEXT, *"email body"*);
emailIntent.setPackage(selectedPackageName);
关于android - 如何选择带有 ACTION_SENDTO 的电子邮件应用程序也支持附件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33098280/
我想从我的应用程序发送一封电子邮件。所以我使用了下面的代码。 String uriText = "abcd@gmail.com" + "?subject=" + URLEncoder.encode("
我在 Android 2.1 中执行以下代码 fragment 时遇到“当前不支持此操作”错误情况。代码段有什么问题? public void onClick(View v) { Intent i
现在我正在使用 ACTION_SEND 但是有太多应用程序弹出窗口可供选择所以我想使用 ACTION_SENDTO,但我还需要将一些文件(.zip 或图像)附加到电子邮件正文以进行发送,我检查了几乎所
我正在编写一个 Android 应用程序,用户可以在其中将视频上传到 Youtube。我希望 Youtube 标签字段预先填充我设置的标签。 我还希望 UI 像这样工作:用户点击上传按钮,用户直接进入
在here , 下面给出例子: public void composeMmsMessage(String message, Uri attachment) { Intent intent = ne
Intent.ACTION_SENDTO 中显示了两个选项,但我的客户要求删除 gmail 选项,但我没有找到出路请帮助我 Intent emailIntent = new Intent(Int
所以我正在制作这个应用程序,它包含几个使用抽屉导航链接到主要 Activity 的 fragment 。其中一个 fragment 的 XML 布局包含一个按钮,单击该按钮将发送一封电子邮件。我正在模
我有一个向指定联系人发送消息的应用程序。现在我用 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("smsto:" + phoneNu
在我的应用程序中,我想向某人(电话联系人)发送一条消息,我希望用户决定他将使用哪个 channel (短信、电子邮件...)。 文档表明 ACTION_SENDTO应在这种情况下使用。我正在使用以下代
我正在为启动设备默认邮件客户端的 Activity 编写 JUnit 测试。我想验证“发送到” Activity 是否已启动,然后将点击事件发送到“发送”按钮。 我确实设置了一个带有 Intent 过
我正在尝试以 android Intent 启动 whatsapp: String uri = "smsto:+123456"; Intent messageIntent = new Intent(I
我的 Android 应用程序允许用户通过标准 Intent 范例共享内容,但我移植的代码无法在 Kindle Fire 上运行。在下面的两个代码 fragment 中,默认的 Kindle 电子邮件
我正尝试在 Android Studio 3.01 中使用电子邮件 Intent 。如果我使用 ACTION_SENDTO,我会收到错误消息 No apps can perform this acti
我是一名优秀的程序员,十分优秀!