易采站长站为您分析Android中使用Service实现后台发送邮件功能的方法,结合实例形式分析了Service实现邮件的发送、接收及权限控制相关技巧,需要的朋友可以参考下
本文实例讲述了Android中使用Service实现后台发送邮件功能。,具体如下:
程序如下:
import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources.NotFoundException;
import android.os.Bundle;
import android.widget.TextView;
public class A05Activity extends Activity {
private TextView tv;
private String[] receiver;
private String subject;
private String body;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=(TextView)findViewById(R.id.tv);
tv.setText("等待接收邮件中···");
try {
//取得短信传来的Bundle
Bundle b=this.getIntent().getExtras();
if(b!=null){
//将Bundle中的字符串取出
String s=b.getString("input");
receiver=new String[]{"1650967185@163.com"};
subject="邮箱发送";
body=s.toString();
//自定义一个Intent业执行发送E-mail的工作
Intent i=new Intent(android.content.Intent.ACTION_SEND);
i.setType("plain/text");//设置邮件格式为“plain/text”
i.putExtra(android.content.Intent.EXTRA_EMAIL,receiver);//传入收件人地址
i.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);//传入邮件主题
i.putExtra(android.content.Intent.EXTRA_TEXT, body);//传入邮件内容
startActivity(Intent.createChooser(i, getResources().getString(R.string.message)));
}
else{
finish();
}
} catch (NotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.gsm.SmsMessage;//用来收取短信
import android.widget.Toast;//告知用户收到短信
@SuppressWarnings("deprecation")
public class ServiceA05 extends BroadcastReceiver{
public static final String mAction="android.provider.Telephony.SMS_RECEIVED";
private String str_receiver="收到短信";
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
Toast.makeText(arg0, str_receiver.toString(), Toast.LENGTH_LONG).show();
if(arg1.getAction().equals(mAction)){
//建构一字符串集合变量sb
StringBuilder sb=new StringBuilder();
//接收数据
Bundle b=arg1.getExtras();
//判断intent传送数据是否为空
if(b!=null){
//pdus为android内置的短信参数indentifier
/*
* 通过bundle.get("")返回一个包含pdus的对象*/
Object[] myOBJpuds=(Object[])b.get("pdus");
//构造短信对象数组,并根据短信内容大小来确定数组的大小
SmsMessage[] sm=new SmsMessage[myOBJpuds.length];
for(int i=0;i<myOBJpuds.length;i++){
sm[i]=SmsMessage.createFromPdu((byte[])myOBJpuds[i]);
}
//将短信合并自定义信息于StringBuilder当中
for(SmsMessage sm01:sm){
sb.append("接收到来自:n");
//收信人的电话号码
sb.append(sm01.getDisplayOriginatingAddress());
sb.append("n--------传来的短信---------n");
//取得传来短信的内容
sb.append(sm01.getDisplayMessageBody());
//用Toast来显示来电信息
Toast.makeText(arg0, sb.toString(), Toast.LENGTH_LONG).show();
}
}
Toast.makeText(arg0, sb.toString(), Toast.LENGTH_LONG).show();
//返回主Activity
Intent i=new Intent(arg0,A05Activity.class);
//定义一个Bundle
Bundle b01=new Bundle();
//将短信以putString()方法存入Bundle中
b01.putString("input", sb.toString());
//将Bundle放入Intent中
i.putExtras(b01);
//设置Intent的Flag以一个全新的task来运行
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
arg0.startActivity(i);
}
}
}










