Android开发的文件邮件群发

对于某些应用,需要为其添加一个“分享”功能菜单,如通过Email或蓝牙分享给别人。
此时可以直接调用系统内置的服务,而不需要自己实现。
且看测试程序截图(将一指定文件通过蓝牙或Email分享给别人):
布局main.xml就一个button,代码如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    >    <Button      android:text="Test Email"      android:id="@+id/btnEmail"      android:layout_width="fill_parent"      android:layout_height="wrap_content" /></LinearLayout>
然后就是程序代码EmailTest.java:
package com.ucrobotics.emailtest; import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.widget.Button; public class EmailTest extends Activity {  private Button btnEmail = null;     public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);   btnEmail = (Button) this.findViewById(R.id.btnEmail);  btnEmail.setOnClickListener(new ClickEvent());    }  class ClickEvent implements View.OnClickListener {  public void onClick(View v) {   Intent it = new Intent(Intent.ACTION_SEND);   //it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");    //it.putExtra(Intent.EXTRA_STREAM, "[url=]file:///sdcard/sprt.txt[/url]");   it.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + "/sdcard/test.jpg"));    //it.setType("plain/text");   it.setType("text/html");   startActivity(Intent.createChooser(it, "选择分享方式"));  } }}
主要就是调用系统的Intent.ACTION_SEND服务。虽然设置的是"text/html"类型,但发送文件或是图片都是可以的。然后选择不同的客户端就会调用各自的服务进行文件发送操作。

关于选取不同的intent和type会有如下测试结论:
Intent.ACTION_SEND + plain/text ---> 列表里仅有Gmail和系统默认Email两个客户端
Intent.ACTION_SEND + text/html ---> 除了两个email客户端,还有蓝牙客户端
Intent.ACTION_SEND_MULTIPLE + * ---> 此时会显示两个email客户端和短信服务
Intent.ACTION_SENDTO + * ---> 没有应用显示
由于都是调用系统自带的服务,所以无需在manifest.xml里添加权限之类的设置及<activity>声明!
================
还有其它相关的Intent调用:(未测试)
  1,调web浏览器
  uri mybloguri = uri.parse("kuikui.javaeye.com")
  returnit = new intent(intent.action_view, mybloguri);
  2,地图
  uri mapuri = uri.parse("geo:38.899533,-77.03676");

  returnit = new intent(intent.action_view, mapuri);
  3,调拨打电话界
  uri teluri = uri.parse("tel:100861");
  returnit = new intent(intent.action_dial, teluri);
  4,直接拨打电话
  uri calluri = uri.parse("tel:100861");
  returnit = new intent(intent.action_call, calluri);
  5,卸载
  uri uninstalluri = uri.fromparts("package", "xxx", null);
  returnit = new intent(intent.action_delete, uninstalluri);
  6,安装
  uri installuri = uri.fromparts("package", "xxx", null);
  returnit = new intent(intent.action_package_added, installuri);
  7,播放
  uri playuri = uri.parse("file:///sdcard/download/everything.mp3");
  returnit = new intent(intent.action_view, playuri);
  8,调用发邮件
  uri emailuri = uri.parse("mailto:shenrenkui@gmail.com");
  returnit = new intent(intent.action_sendto, emailuri);
  9,发邮件
  returnit = new intent(intent.action_send);
  string[] tos = { "shenrenkui@gmail.com" };
  string[] ccs = { "shenrenkui@gmail.com" };
  returnit.putextra(intent.extra_email, tos)
  returnit.putextra(intent.extra_cc, ccs);
  returnit.putextra(intent.extra_text, "body");
  returnit.putextra(intent.extra_subject, "subject");
  returnit.settype("message/rfc882")
  intent.createchooser(returnit, "choose email client");
  10,发短信
  uri smsuri = uri.parse("tel:100861");
  returnit = new intent(intent.action_view, smsuri);
  returnit.putextra("sms_body", "shenrenkui");
  returnit.settype("vnd.android-dir/mms-sms");
还可以参见这里:apps.hi.baidu.com/share/detail/33356980
测试发现,如果将上面的:
it.setType("text/html");
改成:
it.setType("text/plain");
就会出现更多的应用选择,如新浪微博,彩信等等。
但因为测试的是.txt文本文件,微博提示说无法识别的格式。
但如果将前面的 Intent.EXTRA_STREAM 改成 Intent.EXTRA_TEXT,则邮件客户端选中后没附件了,蓝牙分享也工作的不正常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值