Android中使用Service實(shí)現(xiàn)后臺(tái)發(fā)送郵件功能實(shí)例
本文實(shí)例講述了Android中使用Service實(shí)現(xiàn)后臺(tái)發(fā)送郵件功能。分享給大家供大家參考,具體如下:
程序如下:
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 {
//取得短信傳來(lái)的Bundle
Bundle b=this.getIntent().getExtras();
if(b!=null){
//將Bundle中的字符串取出
String s=b.getString("input");
receiver=new String[]{"1650967185@163.com"};
subject="郵箱發(fā)送";
body=s.toString();
//自定義一個(gè)Intent業(yè)執(zhí)行發(fā)送E-mail的工作
Intent i=new Intent(android.content.Intent.ACTION_SEND);
i.setType("plain/text");//設(shè)置郵件格式為“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);//傳入郵件內(nèi)容
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;//用來(lái)收取短信
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)){
//建構(gòu)一字符串集合變量sb
StringBuilder sb=new StringBuilder();
//接收數(shù)據(jù)
Bundle b=arg1.getExtras();
//判斷intent傳送數(shù)據(jù)是否為空
if(b!=null){
//pdus為android內(nèi)置的短信參數(shù)indentifier
/*
* 通過(guò)bundle.get("")返回一個(gè)包含pdus的對(duì)象*/
Object[] myOBJpuds=(Object[])b.get("pdus");
//構(gòu)造短信對(duì)象數(shù)組,并根據(jù)短信內(nèi)容大小來(lái)確定數(shù)組的大小
SmsMessage[] sm=new SmsMessage[myOBJpuds.length];
for(int i=0;i<myOBJpuds.length;i++){
sm[i]=SmsMessage.createFromPdu((byte[])myOBJpuds[i]);
}
//將短信合并自定義信息于StringBuilder當(dāng)中
for(SmsMessage sm01:sm){
sb.append("接收到來(lái)自:\n");
//收信人的電話號(hào)碼
sb.append(sm01.getDisplayOriginatingAddress());
sb.append("\n--------傳來(lái)的短信---------\n");
//取得傳來(lái)短信的內(nèi)容
sb.append(sm01.getDisplayMessageBody());
//用Toast來(lái)顯示來(lái)電信息
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);
//定義一個(gè)Bundle
Bundle b01=new Bundle();
//將短信以putString()方法存入Bundle中
b01.putString("input", sb.toString());
//將Bundle放入Intent中
i.putExtras(b01);
//設(shè)置Intent的Flag以一個(gè)全新的task來(lái)運(yùn)行
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中注冊(cè)一個(gè)BroadcastReceiver,并設(shè)置這個(gè)receiver的intent-filter(Android.provider.Telephony.SMS_RECEIVED),讓它針對(duì)短信事件做出反應(yīng)。并且還要添加一個(gè)權(quán)限:android.permission.RECEIVE_SMS。
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android控件用法總結(jié)》及《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
- Android 后臺(tái)發(fā)送郵件到指定郵箱
- Android快速實(shí)現(xiàn)發(fā)送郵件實(shí)例
- Android發(fā)送郵件的方法實(shí)例詳解
- Android監(jiān)聽(tīng)手機(jī)電話狀態(tài)與發(fā)送郵件通知來(lái)電號(hào)碼的方法(基于PhoneStateListene實(shí)現(xiàn))
- Android 后臺(tái)發(fā)送郵件示例 (收集應(yīng)用異常信息+Demo代碼)
- Android開(kāi)發(fā)中怎樣調(diào)用系統(tǒng)Email發(fā)送郵件(多種調(diào)用方式)
- android實(shí)現(xiàn)自動(dòng)發(fā)送郵件
相關(guān)文章
android實(shí)現(xiàn)撲克卡片翻轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)撲克卡片翻轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Flutter?WebView?預(yù)加載實(shí)現(xiàn)方法(Http?Server)
這篇文章主要介紹了Flutter?WebView?預(yù)加載實(shí)現(xiàn)方法,包括資源的配置,資源的下載和存儲(chǔ),版本的管理,如何根據(jù)實(shí)際url獲取對(duì)應(yīng)HttpServer?bind的url等,需要的朋友可以參考下2022-05-05
android實(shí)現(xiàn)App活動(dòng)定時(shí)自動(dòng)跳轉(zhuǎn)效果
本篇文章主要介紹了android實(shí)現(xiàn)App活動(dòng)定時(shí)自動(dòng)跳轉(zhuǎn)效果,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
Android studio 生成帶Kotlin文檔的實(shí)現(xiàn)方式
這篇文章主要介紹了Android studio 生成帶Kotlin文檔的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Flutter?文字中劃線動(dòng)畫(huà)StrikeThroughTextAnimation
這篇文章主要為大家介紹了Flutter?文字中劃線動(dòng)畫(huà)StrikeThroughTextAnimation示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
flutter?material?widget組件之信息展示組件使用詳解
這篇文章主要為大家詳細(xì)介紹了flutter?material?widget組件之信息展示組件的使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08

