設計接收簡訊程式 , 以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
Set KeySet = 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皆會保留 , 也會根據題目所要求的流程去實作 , 縱使題目要求繞遠路....

沒有留言:
張貼留言