短信发送接收装置
接到Boss的命令,要求我們做一個(gè)在Android手機(jī)上運(yùn)行的小的例子,實(shí)現(xiàn)的功能是:通過一個(gè)手機(jī)向另外一個(gè)手機(jī)發(fā)送數(shù)據(jù),另外一個(gè)Android手機(jī)接收到后通過USB接口輸出!
該裝置主要由三個(gè)步驟組成:
1、發(fā)信息
2、接收信息并讀取信息內(nèi)容
3、從 USB 口輸出(這里暫時(shí)沒實(shí)現(xiàn))
就是為了實(shí)現(xiàn)一個(gè)短信發(fā)送,并接收短信內(nèi)容輸出的裝置
MainActivity.java 類實(shí)現(xiàn)的是發(fā)送信息的功能
1 package com.example.android_phone; 2 3 import java.util.ArrayList; 4 5 import android.app.Activity; 6 import android.os.Bundle; 7 import android.telephony.SmsManager; 8 import android.view.Menu; 9 import android.view.View; 10 import android.view.View.OnClickListener; 11 import android.widget.Button; 12 import android.widget.Toast; 13 14 public class MainActivity extends Activity { 15 private Button mButton; 16 private String mContent; 17 private String mPhoneNumber; 18 19 @Override 20 protected void onCreate(Bundle savedInstanceState) { 21 super.onCreate(savedInstanceState); 22 setContentView(R.layout.activity_main); 23 mButton = (Button) this.findViewById(R.id.button1); 24 mContent = "短信內(nèi)容"; 25 mPhoneNumber = "1833607****"; 26 mButton.setOnClickListener(new OnClickListener() { 27 @Override 28 public void onClick(View v) { 29 // TODO Auto-generated method stub 30 send(mPhoneNumber,mContent); 31 } 32 }); 33 } 34 35 private void send(String phoneNumber, String content){ 36 SmsManager smsManager =SmsManager.getDefault(); 37 ArrayList<String> texts = smsManager.divideMessage(content); 38 for(String text : texts){ 39 smsManager.sendTextMessage(phoneNumber, null, text, null, null); 40 } 41 Toast.makeText(getApplicationContext(), "---發(fā)送成功---", Toast.LENGTH_LONG).show(); 42 } 43 44 }SMSBroadcastReceiver.java 類實(shí)現(xiàn)對廣播的監(jiān)聽,并讀取短信的內(nèi)容
1 package com.example.android_phone; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 6 import android.content.BroadcastReceiver; 7 import android.content.Context; 8 import android.content.Intent; 9 import android.os.Bundle; 10 import android.telephony.SmsMessage; 11 import android.widget.Toast; 12 13 public class SMSBroadcastReceiver extends BroadcastReceiver{ 14 15 //信息接收廣播 16 private static final Object ACTION = "android.provider.Telephony.SMS_RECEIVED"; 17 private String sender; 18 private String content; 19 private String sendtime; 20 @Override 21 public void onReceive(Context context, Intent intent) { 22 // TODO Auto-generated method stub 23 if (intent.getAction().equals(ACTION)) { 24 StringBuffer SMSAddress = new StringBuffer(); 25 StringBuffer SMSContent = new StringBuffer(); 26 Bundle bundle = intent.getExtras(); 27 if (bundle != null) { 28 // 通過pdus獲得接收到的所有短信消息,獲取短信內(nèi)容; 29 Object[] pdusObjects = (Object[]) bundle.get("pdus"); 30 // 構(gòu)建短信對象數(shù)組; 31 SmsMessage[] messages = new SmsMessage[pdusObjects.length]; 32 for (int i = 0; i < pdusObjects.length; i++) { 33 // 獲取單條短信內(nèi)容,以pdu格式存,并生成短信對象; 34 messages[i] = SmsMessage 35 .createFromPdu((byte[]) pdusObjects[i]); 36 } 37 for (SmsMessage message : messages) { 38 SMSAddress.append(message.getDisplayOriginatingAddress()); 39 SMSContent.append(message.getDisplayMessageBody()); 40 41 42 SMSAddress.append("短信來自:" + message.getDisplayOriginatingAddress() 43 + "\n"); 44 SMSContent.append("短信內(nèi)容:" + message.getMessageBody()); 45 46 sender = message.getDisplayOriginatingAddress();// 獲取短信的發(fā)送者 47 content = message.getMessageBody();// 獲取短信的內(nèi)容 48 Date date = new Date(message.getTimestampMillis()); 49 SimpleDateFormat format = new SimpleDateFormat( 50 "yyyy-MM-dd HH:mm:ss"); 51 sendtime = format.format(date);// 獲取短信發(fā)送時(shí)間; 52 // SmsManager manager = SmsManager.getDefault(); 53 // manager.sendTextMessage("5556", 54 // null,"發(fā)送人:"+sender+"-----發(fā)送時(shí)間:"+sendtime+"----內(nèi)容:"+content, 55 // null, null);//把攔截到的短信發(fā)送到指定的手機(jī),此處為5556; 56 // if ("5556".equals(sender)){ 57 // //屏蔽手機(jī)號為5556的短信,這里還可以時(shí)行一些處理,如把該信息發(fā)送到第三人的手機(jī)等等。 58 // abortBroadcast(); 59 // } 60 Toast.makeText(context, "短信內(nèi)容:"+content, Toast.LENGTH_LONG).show(); 61 } 62 63 } 64 } 65 } 66 67 }權(quán)限設(shè)置
1 <!-- 發(fā)送短信 --> 2 <uses-permission android:name="android.permission.SEND_SMS"/> 3 <!-- 接收短信 --> 4 <uses-permission android:name="android.permission.RECEIVE_SMS"/> 5 <!-- 讀取短信內(nèi)容 --> 6 <uses-permission android:name="android.permission.READ_SMS"/> 7 <!-- 收到短信時(shí)廣播 --> 8 <uses-permission android:name="android.permission.BROADCAST_SMS"/> 9 <!-- 編寫短信--> 10 <uses-permission android:name="android.permission.WRITE_SMS"/> 11廣播監(jiān)聽
1 <receiver android:name=".SMSBroadcastReceiver"> 2 <intent-filter android:priority="800"> 3 <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 4 </intent-filter> 5 </receiver>?
?
---------------------------------------未完待續(xù)---------------------------------------
轉(zhuǎn)載于:https://www.cnblogs.com/zhjsll/p/3861532.html
總結(jié)
- 上一篇: UML 用例图
- 下一篇: 编程之美----子数组的最大乘积