欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中使用Service实现后台发送邮件功能实例

程序员文章站 2024-02-14 10:11:58
本文实例讲述了android中使用service实现后台发送邮件功能。分享给大家供大家参考,具体如下: 程序如下: import android.app.act...

本文实例讲述了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);
 }
 }
}

androidmanifest.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.my.a05"
  android:versioncode="1"
  android:versionname="1.0" >
  <uses-sdk android:minsdkversion="10" />
  <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
      android:name=".a05activity"
      android:label="@string/app_name" >
      <intent-filter>
        <action android:name="android.intent.action.main" />
        <category android:name="android.intent.category.launcher" />
      </intent-filter>
    </activity>
    <receiver android:name="servicea05">
      <intent-filter>
        <action android:name="android.provider.telephony.sms_received"/>
      </intent-filter>
    </receiver>
  </application>
  <uses-permission android:name="android.permission.receive_sms"/>
</manifest>

在android中注册一个broadcastreceiver,并设置这个receiver的intent-filter(android.provider.telephony.sms_received),让它针对短信事件做出反应。并且还要添加一个权限:android.permission.receive_sms。

更多关于android相关内容感兴趣的读者可查看本站专题:《android控件用法总结》及《android开发入门与进阶教程

希望本文所述对大家android程序设计有所帮助。