当前位置: 移动技术网 > IT编程>移动开发>Android > Android中使用Service实现后台发送邮件功能实例

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

吉米网,普洱茶的产地在哪,国之利刃游戏下载

本文实例讲述了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程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网