Android實(shí)現(xiàn)收到新短信后自動(dòng)發(fā)郵件功能
本文實(shí)例為大家分享了Android實(shí)現(xiàn)收到新短信后自動(dòng)發(fā)郵件的具體代碼,供大家參考,具體內(nèi)容如下
開發(fā)環(huán)境 Android Studio 3.2.1
首先,既然跟讀短信和發(fā)郵件有關(guān),那么就一定要相關(guān)的權(quán)限,且安裝完應(yīng)用后要手動(dòng)打開相關(guān)權(quán)限…
// 接收和讀取短信 <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" /> // 訪問網(wǎng)絡(luò) ?<uses-permission android:name="android.permission.INTERNET" />
第二,要用到相關(guān)的庫,直接下載就行
在庫文件中添加
android { ?? ??? ?packagingOptions { ?? ??? ??? ?// 相關(guān)證明 ?? ??? ??? ?pickFirst 'META-INF/LICENSE.txt' ?? ??? ?} ?? ?} dependencies { ?? ??? ?// 相關(guān)庫 ?? ? ? ?implementation 'com.sun.mail:android-mail:1.6.0' ? ? ?? ?implementation 'com.sun.mail:android-activation:1.6.0' ? ? }
上源碼 :
package packageName; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.telephony.SmsMessage; import android.text.TextUtils; import java.util.Date; import java.util.Properties; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.MimeMessage; public class MainActivity extends AppCompatActivity ?{ ? ?// 自定義廣播 ? ?private BroadcastReceiver smsReceiver; ? ?// 過濾器 ? ?private IntentFilter filter; ? ?// 郵箱內(nèi)容 ? ?private String strContent; ? ?// 郵箱標(biāo)題 ? ?private String strTitle; ? ?// 消息處理器 ? ?private Handler handler; ? ?@Override ? ?protected void onCreate(Bundle savedInstanceState) { ? ? ? ?super.onCreate(savedInstanceState); ? ? ? ?// 布局文件中沒啥東西 ? ? ? ?setContentView(R.layout.activity_main); ? ??? ? ? // ?帥選出接受到的新短信 ? ? ? ?filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); ? ? ? ?// 給其最大權(quán)限 ? ? ? ?filter.setPriority(Integer.MAX_VALUE); ? ??? ? ? // 一收到新消息就發(fā)送郵件 ? ? ? ?handler = new Handler() { ? ? ? ? ? ?@Override ? ? ? ? ? ?public void handleMessage(Message msg) { ? ? ? ? ? ? ? ?Properties p = new Properties(); ? ? ? ? ? ? ? ?// 后面寫發(fā)送人 的郵箱類型,qq 的寫 smtp.qq.com ? ? ? ? ? ? ? ?p.put("mail.smtp.host", "smtp.163.com"); ? ? ? ? ? ? ? ?// mail 包下的 ? ? ? ? ? ? ? ?Session session = Session.getInstance(p, null); ? ? ? ? ? ? ? ?final MimeMessage mess = new MimeMessage(session); ? ? ? ? ? ? ? ?try { ? ? ? ? ? ? ? ? ? ?mess.setFrom("發(fā)送人郵箱"); ? ? ? ? ? ? ? ? ? ?mess.setRecipients(javax.mail.Message.RecipientType.TO, "接收人郵箱"); ? ? ? ? ? ? ? ? ? ?// 設(shè)置郵件標(biāo)題,當(dāng)前設(shè)置為電話號(hào)碼 ? ? ? ? ? ? ? ? ? ?mess.setSubject(strTitle); ? ? ? ? ? ? ? ? ? ?// 設(shè)置短信內(nèi)容,只支持文本 ? ? ? ? ? ? ? ? ? ?mess.setText(strContent); ? ? ? ? ? ? ? ? ? ?// 設(shè)置時(shí)間 ? ? ? ? ? ? ? ? ? ?mess.setSentDate(new Date()); ? ? ? ? ? ? ? ? ? ?// 聯(lián)網(wǎng)操作要在線程中執(zhí)行 ? ? ? ? ? ? ? ? ? ?new Thread(new Runnable() { ? ? ? ? ? ? ? ? ? ? ? ?@Override ? ? ? ? ? ? ? ? ? ? ? ?public void run() { ? ? ? ? ? ? ? ? ? ? ? ? ? ?try { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Transport.send(mess, "接收人郵箱", "接收人郵箱的授權(quán)碼"); ? ? ? ? ? ? ? ? ? ? ? ? ? ?} catch (MessagingException e) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?e.printStackTrace(); ? ? ? ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ?}).start(); ? ? ? ? ? ? ? ?} catch (MessagingException e) { ? ? ? ? ? ? ? ? ? ?e.printStackTrace(); ? ? ? ? ? ? ? ?} ? ? ? ? ? ?} ? ? ? ?}; ? ??? ? ? // 廣播接收到指定內(nèi)容后進(jìn)行的操作 ? ? ? ?smsReceiver = new BroadcastReceiver() { ? ? ? ? ? ?@Override ? ? ? ? ? ?public void onReceive(Context context, Intent intent) { ? ? ? ? ? ? ? ?Object[] objs = (Object[]) intent.getExtras().get("pdus"); ? ? ? ? ? ? ? ?for (Object o : objs) { ? ? ? ? ? ? ? ? ? ?byte[] pdu = (byte[]) o; ? ? ? ? ? ? ? ? ? ?SmsMessage sms = SmsMessage.createFromPdu(pdu); ? ? ? ? ? ? ? ? ? ?// 發(fā)送人電話號(hào)碼 ? ? ? ? ? ? ? ? ? ?strTitle = sms.getOriginatingAddress(); ? ? ? ? ? ? ? ? ? ?// 短信內(nèi)容 ? ? ? ? ? ? ? ? ? ?strContent = sms.getMessageBody(); ? ??? ??? ??? ??? ? ? // 若都不為空則發(fā)送郵件 ? ? ? ? ? ? ? ? ? ?if (!TextUtils.isEmpty(strContent) && !TextUtils.isEmpty(strTitle)) { ? ? ? ? ? ? ? ? ? ? ? ?handler.sendEmptyMessage(1); ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ?} ? ? ? ? ? ?} ? ? ? ?}; ? ??? ?// 開啟廣播,一定要關(guān)閉 ? ? ? ?registerReceiver(smsReceiver, filter); ? ?} ? ?@Override ? ?protected void onDestroy() { ? ? ? ?super.onDestroy(); ? ? ? ?// 關(guān)閉廣播 ? ? ? ?unregisterReceiver(smsReceiver); ? ?} }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android WebView與JS交互全面詳解(小結(jié))
本篇文章主要介紹了Android WebView與JS交互全面詳解(小結(jié)),實(shí)現(xiàn)了Android客戶端與Web網(wǎng)頁交互,具有一定的參考價(jià)值,有興趣的可以了解一下2017-11-11Android添加用戶組及自定義App權(quán)限的方法
今天小編就為大家分享一篇Android添加用戶組及自定義App權(quán)限的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07Flutter實(shí)現(xiàn)自定義搜索框AppBar的示例代碼
開發(fā)中,頁面頭部為搜索樣式的設(shè)計(jì)非常常見,為了可以像系統(tǒng)AppBar那樣使用,本文將利用Flutter自定義一個(gè)搜索框,感興趣的可以了解一下2022-04-04Android實(shí)現(xiàn)一個(gè)絲滑的自動(dòng)輪播控件實(shí)例代碼
輪播圖對大家來說應(yīng)該再熟悉不過了,下面這篇文章主要給大家介紹了關(guān)于Android實(shí)現(xiàn)一個(gè)絲滑的自動(dòng)輪播控件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08Android程序開發(fā)之自定義設(shè)置TabHost,TabWidget樣式
這篇文章主要介紹了Android程序開發(fā)之自定義設(shè)置TabHost,TabWidget樣式的相關(guān)資料,需要的朋友可以參考下2016-03-03Mac中Eclipse連不上Android手機(jī)的解決方法
這篇文章主要介紹了Mac中Eclipse連不上Android手機(jī)的解決方法,本文方法同樣適用其它的移動(dòng)設(shè)備,需要的朋友可以參考下2015-06-06Android 自定義Dialog去除title導(dǎo)航欄的解決方法
今天小編就為大家分享一篇Android 自定義Dialog去除title導(dǎo)航欄的解決方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07Android簡單實(shí)現(xiàn)app每月簽到功能
這篇文章主要為大家詳細(xì)介紹了Android簡單實(shí)現(xiàn)app每月簽到功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11Android ListView實(shí)現(xiàn)上拉加載更多和下拉刷新功能
這篇文章主要為大家詳細(xì)介紹了Android ListView實(shí)現(xiàn)上拉加載更多和下拉刷新功能,介紹了ListView刷新原理及實(shí)現(xiàn)方法,感興趣的小伙伴們可以參考一下2016-05-05