Android創(chuàng)建簡(jiǎn)單發(fā)送和接收短信應(yīng)用
本文實(shí)例為大家分享了Android創(chuàng)建發(fā)送和接收短信應(yīng)用的簡(jiǎn)單實(shí)現(xiàn)過程,供大家參考,具體內(nèi)容如下
一、接收短信
項(xiàng)目的結(jié)構(gòu)如下:一個(gè)簡(jiǎn)單的接收和發(fā)送短信的功能
1、定義一個(gè)接收短信的廣播:當(dāng)手機(jī)接收到一條短信的時(shí)候,系統(tǒng)會(huì)發(fā)出一條值為android.provider.Telephony.SMS_RECEIVED 的廣播,這條廣播里攜帶著與短信相關(guān)的所有數(shù)據(jù)。
// 接收短信的廣播 class MessageReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); Object[] pdus = (Object[]) bundle.get("pdus"); // 提取短信消息 SmsMessage[] messages = new SmsMessage[pdus.length]; for (int i = 0; i < messages.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); } String address = messages[0].getOriginatingAddress(); // 獲取發(fā)送方號(hào)碼 String fullMessage = ""; for (SmsMessage message : messages) { fullMessage += message.getMessageBody(); // 獲取短信內(nèi)容 } textView.setText("address; " + address + ", message: " + fullMessage); abortBroadcast(); } }
2、 注冊(cè)廣播,這里我們動(dòng)態(tài)在代碼中注冊(cè):
// 注冊(cè)接收廣播 IntentFilter intentFilter1 = new IntentFilter(); intentFilter1.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); intentFilter1.addAction("android.provider.Telephony.SMS_RECEIVED"); messageReceiver = new MessageReceiver(); registerReceiver(messageReceiver, intentFilter1);
3、 聲明權(quán)限:
<uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.RECEIVE_SMS" />
二、發(fā)送短信
1、 發(fā)送短信:用getDefault方法得到SmsManager對(duì)象,調(diào)用sendTextMessage方法發(fā)送短信
// 發(fā)送短信 public void send(View view) { SmsManager smsManager = SmsManager.getDefault(); String destinationAddress = "15527100207"; String text = "我愛你!"; Intent intent1 = new Intent(SENT_SMS_ACTION); PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, intent1, 0); Intent intent2 = new Intent(DELIVERY_SMS_ACTION); PendingIntent deliveryIntent = PendingIntent.getBroadcast(this, 0, intent2, 0); smsManager.sendTextMessage(destinationAddress, null, text, sentIntent, deliveryIntent); // aidl服務(wù),進(jìn)程間的通信 }
我們具體了解一下sendTextMessage方法一個(gè)參數(shù)的含義:
public void sendTextMessage(String destinationAddress, String scAddress, String text,PendingIntent sentIntent, PendingIntent deliveryIntent) destinationAddress: // 目的地,也就是對(duì)方的手機(jī)號(hào) scAddress: // 服務(wù)中心地址,為空的話就是默認(rèn)的SMSC text: // 發(fā)送消息的具體內(nèi)容 sentIntent: // 當(dāng)消息成功或者失敗發(fā)送時(shí),就發(fā)起這個(gè)廣播 deliveryIntent: // 當(dāng)消息到達(dá)目的地時(shí),就發(fā)起這個(gè)廣播
2、 sentIntent的廣播:
// 發(fā)送短信的狀態(tài)廣播 class MessageBroadcast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 一個(gè)10位數(shù)的號(hào)碼發(fā)送,也能成功,但是對(duì)方?jīng)]有接收短信。 if (getResultCode() == RESULT_OK) { Toast.makeText(MainActivity.this, "發(fā)送成功!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "發(fā)送失敗!", Toast.LENGTH_SHORT).show(); } } }
3、 deliveryIntent的廣播:
// 當(dāng)消息被傳遞給收件人時(shí) class DeliveryBroadcast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(MainActivity.this, "對(duì)方接收短信成功!", Toast.LENGTH_SHORT).show(); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
- Android Mms之:短信發(fā)送流程(圖文詳解)
- Android發(fā)送短信功能代碼
- android中可以通過兩種方式調(diào)用接口發(fā)送短信
- Android實(shí)現(xiàn)將已發(fā)送的短信寫入短信數(shù)據(jù)庫(kù)的方法
- Android實(shí)現(xiàn)發(fā)送短信功能實(shí)例詳解
- Android實(shí)現(xiàn)短信加密功能(發(fā)送加密短信、解密本地短信)
- Android短信發(fā)送器實(shí)現(xiàn)方法
- Android實(shí)現(xiàn)短信發(fā)送功能
- Android編程實(shí)現(xiàn)讀取手機(jī)聯(lián)系人、撥號(hào)、發(fā)送短信及長(zhǎng)按菜單操作方法實(shí)例小結(jié)
- Android Intent的幾種用法詳細(xì)解析
- android中intent傳遞list或者對(duì)象的方法
- Android系列之Intent傳遞對(duì)象的幾種實(shí)例方法
- Android使用Intent發(fā)送短信的實(shí)現(xiàn)方法
相關(guān)文章
利用Flutter實(shí)現(xiàn)背景圖片毛玻璃效果實(shí)例
Flutter沒有單獨(dú)的模糊處理容器,需要部件層層疊加實(shí)現(xiàn)模糊效果,下面這篇文章主要給大家介紹了關(guān)于利用Flutter實(shí)現(xiàn)背景圖片毛玻璃效果的相關(guān)資料,需要的朋友可以參考下2022-06-06Android中backgroundDimEnabled的作用
這篇文章主要介紹了Android中backgroundDimEnabled的作用的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10Android使用Fragment打造萬(wàn)能頁(yè)面切換框架
這篇文章主要介紹了Android使用Fragment打造萬(wàn)能頁(yè)面切換框架的相關(guān)資料,需要的朋友可以參考下2016-01-01Android開發(fā)之StackView用法和遇到的坑分析
這篇文章主要介紹了Android開發(fā)之StackView用法和遇到的坑,結(jié)合實(shí)例形式分析了Android StackView圖片操作用法及常見問題解決方法,需要的朋友可以參考下2019-03-03Android實(shí)現(xiàn)View滑動(dòng)效果的6種方法
這篇文章主要介紹了Android實(shí)現(xiàn)View滑動(dòng)的6種方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03Android中FloatingActionButton實(shí)現(xiàn)懸浮按鈕實(shí)例
這篇文章主要介紹了Android中FloatingActionButton實(shí)現(xiàn)懸浮按鈕實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-04-04Android 中利用 ksoap2 調(diào)用 WebService的示例代碼
這篇文章主要介紹了Android 中利用 ksoap2 調(diào)用 WebService的示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09Android編程之基于Log演示一個(gè)activity生命周期實(shí)例詳解
這篇文章主要介紹了Android編程之基于Log演示一個(gè)activity生命周期,結(jié)合完整實(shí)例形式較為詳細(xì)的分析總結(jié)了Log演示activity生命周期的具體用法及Log的具體使用方法,需要的朋友可以參考下2015-12-12android 應(yīng)用內(nèi)部懸浮可拖動(dòng)按鈕簡(jiǎn)單實(shí)現(xiàn)代碼
本篇文章主要介紹了android 應(yīng)用內(nèi)部懸浮可拖動(dòng)按鈕簡(jiǎn)單實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-10-10Android日期和時(shí)間選擇器實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Android日期和時(shí)間選擇器實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11