設計接收簡訊程式 , 以DDMS模擬產生一則簡訊 , 簡訊送達時使用Toast 顯示傳送者電話及簡訊內容 , 這題實作的技巧其實在之前的文章 [TQC+ Android] 3-2 接收SMS Use BroadcastReceiver, SmsMessage, onNewIntent 都講完了 , 而且這題只是單純的顯示接收到的簡訊內容 , 記得註冊user-permission 和 "android.provider.Telephony.SMS_RECEIVED" , 相當的簡單 , 以下是程式碼。
package COM.TQC.GDD03; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class GDD03 extends Activity { private TextView mTextView1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView1 = (TextView) findViewById(R.id.myTextView1); mTextView1.setText("等待接收簡訊..."); } }這是一個等待簡訊進來的 main Activity。
接下來是 GDD03_SM_Receiver.java , 是用來等待簡訊事件的
package COM.TQC.GDD03 ; import java.util.Set; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; import android.util.Log; import android.widget.Toast; public class GDD03_SM_Receiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Toast t = Toast.makeText(context, "", Toast.LENGTH_LONG); if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) { Bundle bundle = intent.getExtras(); //檢查一下返回的Bundle裡面有哪些的資訊, 檢查Key SetKeySet = bundle.keySet(); for(String s : KeySet) { Log.d("We have key elements", "Key:"+s); } Object messages[] = (Object[]) bundle.get("pdus"); SmsMessage[] smsMessage = new SmsMessage[messages.length]; for (int n = 0; n < messages.length; n++) { smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]); //將原始的PDU格式的資料轉為smsMessage的格式, 由於傳入的簡訊由於長度的限制可能不止一封 } t.setText("接收到來自:"+smsMessage[0].getOriginatingAddress()+"\n----傳來的簡訊----\n"+smsMessage[0].getDisplayMessageBody()); t.show(); } else { t.setText(intent.getAction()); t.show(); } } }
最後別忘了 AndroidManifest.xml
P.S. 題目中所要求的Variable和Method皆會保留 , 也會根據題目所要求的流程去實作 , 縱使題目要求繞遠路....
沒有留言:
張貼留言