Android實(shí)現(xiàn)收到新短信后自動(dòng)發(fā)郵件功能
本文實(shí)例為大家分享了Android實(shí)現(xiàn)收到新短信后自動(dòng)發(fā)郵件的具體代碼,供大家參考,具體內(nèi)容如下
開(kāi)發(fā)環(huán)境 Android Studio 3.2.1
首先,既然跟讀短信和發(fā)郵件有關(guān),那么就一定要相關(guān)的權(quán)限,且安裝完應(yīng)用后要手動(dòng)打開(kāi)相關(guān)權(quán)限…
// 接收和讀取短信 <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" /> // 訪問(wèn)網(wǎng)絡(luò) ?<uses-permission android:name="android.permission.INTERNET" />
第二,要用到相關(guān)的庫(kù),直接下載就行
在庫(kù)文件中添加
android {
?? ??? ?packagingOptions {
?? ??? ??? ?// 相關(guān)證明
?? ??? ??? ?pickFirst 'META-INF/LICENSE.txt'
?? ??? ?}
?? ?}
dependencies {
?? ??? ?// 相關(guān)庫(kù)
?? ? ? ?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;
? ?// 過(guò)濾器
? ?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);
? ? ? ?// 布局文件中沒(méi)啥東西
? ? ? ?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();
? ? ? ? ? ? ? ?// 后面寫(xiě)發(fā)送人 的郵箱類(lèi)型,qq 的寫(xiě) 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è)置為電話(huà)號(hào)碼
? ? ? ? ? ? ? ? ? ?mess.setSubject(strTitle);
? ? ? ? ? ? ? ? ? ?// 設(shè)置短信內(nèi)容,只支持文本
? ? ? ? ? ? ? ? ? ?mess.setText(strContent);
? ? ? ? ? ? ? ? ? ?// 設(shè)置時(shí)間
? ? ? ? ? ? ? ? ? ?mess.setSentDate(new Date());
? ? ? ? ? ? ? ? ? ?// 聯(lián)網(wǎng)操作要在線(xiàn)程中執(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ā)送人電話(huà)號(hào)碼
? ? ? ? ? ? ? ? ? ?strTitle = sms.getOriginatingAddress();
? ? ? ? ? ? ? ? ? ?// 短信內(nèi)容
? ? ? ? ? ? ? ? ? ?strContent = sms.getMessageBody();
? ??? ??? ??? ??? ? ? // 若都不為空則發(fā)送郵件
? ? ? ? ? ? ? ? ? ?if (!TextUtils.isEmpty(strContent) && !TextUtils.isEmpty(strTitle)) {
? ? ? ? ? ? ? ? ? ? ? ?handler.sendEmptyMessage(1);
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ?};
? ??? ?// 開(kāi)啟廣播,一定要關(guān)閉
? ? ? ?registerReceiver(smsReceiver, filter);
? ?}
? ?@Override
? ?protected void onDestroy() {
? ? ? ?super.onDestroy();
? ? ? ?// 關(guān)閉廣播
? ? ? ?unregisterReceiver(smsReceiver);
? ?}
}以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android studio 使用adb 命令傳遞文件到android 設(shè)備的方法
這篇文章主要介紹了android studio 使用adb 命令傳遞文件到android 設(shè)備的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11
Android帶數(shù)字或紅點(diǎn)的底部導(dǎo)航攔和聯(lián)網(wǎng)等待加載動(dòng)畫(huà)示例
這篇文章主要介紹了Android帶數(shù)字或紅點(diǎn)的底部導(dǎo)航攔和聯(lián)網(wǎng)等待加載動(dòng)畫(huà)示例,具有一定的參考價(jià)值,有興趣的同學(xué)可以了解一下。2017-03-03
Android AIDL——進(jìn)程通信機(jī)制詳解
這篇文章主要介紹了Android AIDL——進(jìn)程通信機(jī)制詳解的相關(guān)資料,并附簡(jiǎn)單實(shí)例,和實(shí)現(xiàn)效果圖,需要的朋友可以參考下2016-10-10
Android開(kāi)發(fā)手冊(cè)Chip監(jiān)聽(tīng)及ChipGroup監(jiān)聽(tīng)
這篇文章主要為大家介紹了Android開(kāi)發(fā)手冊(cè)Chip監(jiān)聽(tīng)及ChipGroup監(jiān)聽(tīng),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Android開(kāi)發(fā)之獲取LayoutInflater對(duì)象的方法總結(jié)
這篇文章主要介紹了Android開(kāi)發(fā)之獲取LayoutInflater對(duì)象的方法,結(jié)合實(shí)例形式總結(jié)分析了Android獲取LayoutInflater對(duì)象的常用技巧,需要的朋友可以參考下2016-02-02
Android錄制語(yǔ)音文件wav轉(zhuǎn)mp3的方法示例
這篇文章主要介紹了Android錄制語(yǔ)音文件wav轉(zhuǎn)mp3的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
Flutter輸入框TextField屬性及監(jiān)聽(tīng)事件介紹
這篇文章主要介紹了Flutter輸入框TextField屬性及監(jiān)聽(tīng)事件介紹,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-11-11
Jetpack?Compose對(duì)比React?Hooks?API相似度
這篇文章主要為大家介紹了Jetpack?Compose對(duì)比React?Hooks?API相似度,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Android開(kāi)發(fā)之Activity管理工具類(lèi)完整示例
這篇文章主要介紹了Android開(kāi)發(fā)之Activity管理工具類(lèi),集合完整實(shí)例形式分析了Android操作Activity創(chuàng)建、添加、獲取、移除等相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
Android 詳解ThreadLocal及InheritableThreadLocal
這篇文章主要介紹了Android 詳解ThreadLocal及InheritableThreadLocal的相關(guān)資料,需要的朋友可以參考下2017-01-01

