[IT][Android] Android SMS Demo
以前書いたとおり、Androidのコンテストに参加すべくアプリを作ったりしている。で、先日のAndroid SDKのアップデートでSMSが追加されたということなので、早速アプリを作ってみた。
まあ、作ってみたというよりは、下記サイトのを動作確認したって感じだけどね。
Android - Listen for incoming SMS messages « Show me the code!
http://davanum.wordpress.com/2007/12/15/android-listen-for-incoming-sms-messages/
変えてる所と言えば、設定ファイルでactivityを消したらエラーになったので加えてるくらいかな。
で、受信のプログラムなんだけど、これってUIが用意されてないのかな?プログラムの中でメッセージを受け取って表示しているみたい。
ソースは、こんだけ。
- AndroidManifest.xml
- AndroidSMSDemo.java
package com.gmail.syunduel.demo.android.sms; import android.app.Activity; import android.os.Bundle; public class AndroidSMSDemo extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); } }
- SMSApp.java
package com.gmail.syunduel.demo.android.sms; import android.content.Context; import android.content.Intent; import android.content.IntentReceiver; import android.app.NotificationManager; import android.os.Bundle; import android.provider.Telephony; import android.util.Log; import android.telephony.gsm.SmsMessage; public class SMSApp extends IntentReceiver { private static final String LOG_TAG = "SMSApp"; /* package */ static final String ACTION = "android.provider.Telephony.SMS_RECEIVED"; @Override public void onReceiveIntent(Context context, Intent intent) { // TODO Auto-generated method stub if (intent.getAction().equals(ACTION)) { StringBuilder buf = new StringBuilder(); Bundle bundle = intent.getExtras(); if (bundle != null) { SmsMessage[] messages = Telephony.Sms.Intents .getMessagesFromIntent(intent); for (int i = 0; i < messages.length; i++) { SmsMessage message = messages[i]; buf.append("Received SMS from "); buf.append(message.getDisplayOriginatingAddress()); buf.append(" - "); buf.append(message.getDisplayMessageBody()); } } Log.i(LOG_TAG, "[SMSApp] onReceiveIntent: " + buf); NotificationManager nm = (NotificationManager) context .getSystemService(Context.NOTIFICATION_SERVICE); nm.notifyWithText(123, buf.toString(), NotificationManager.LENGTH_LONG, null); } } }
んで、エミュレータを起動した後にtelnetコマンドでSMSを送信すると、エミュレータの画面にメッセージが表示される。ポートは5554である。
telnet 5554 (telnet開始) sms send <電話番号> <メッセージ>
ちなみに日本語には対応していないようだ。native2asciiした文字を渡しても化け化け。
さて、SMSってメールみたいな画面があるのかと思ってたんだけど、どうしようかなぁ。