Android SMSデータの読み取り方

2011.08.10

 

AndroidでSMSデータの読み取り方について調べました。
番号だけで、端末間で気軽にやり取りができるSMSを利用すれば、
サーバーを用意しなくても、いろいろとできるのではないかと思ったのがきっかけです。

実際に簡単なAndroidアプリケーションを作ってみました。機能は下記の2つです。

  1. SMSデータの一覧を表示する
  2. 一覧で選択したSMSの中身を表示する

1. Androidプロジェクトの作成

  • Androidプロジェクトを作成して、マニフェストファイルにandroid.permission.READ_SMSを追加します。
  • パーミッションの設定

2. Activityの作成

  • SMS情報を表示するActivityを作成します。今回は、ListActivityを拡張します。
  • 作成したActivityをマニフェストファイルに追加します。

3. SMSデータの一覧を表示するメソッドの作成

  • Content Providerにアクセスするqueryを発行します。
  • queryの作成

  • SMSデータを取得して、AdaptorにセットするList<Map>を作成します。
  • Listの作成

  • Adaptorを作成して、Activityにセットします。
  • Adaptorの作成

  • OnCreateメソッドをオーバーライドして、作成したメソッドを呼び出します。
  • 作成したアプリケーションをエミュレータで起動してみます。SMSデータの一覧が表示されています。
  • SMS一覧の表示 ※予め、Contacts、Messagingアプリケーションで、データを作成してあります。

4. SMSの中身を表示するメソッドの作成

  • 一覧が選択された時に呼び出される、onListItemClickメソッドをオーバーライドします。
  • 選択されたデータを取得します。
  • 一覧の選択

  • idからSMSデータの中身を取得して、一覧表示するメソッドを作成します。
  • Content Providerにアクセスするqueryを発行します。
  • queryの作成

  • カラムの一覧、そのデータを取得して、AdaptorにセットするList<Map>を作成します。
  • Listの作成

  • Adaptorを作成して、Activityにセットします。
  • onListItemClickメソッドで、作成したメソッドを呼び出します。
  • メソッドの呼び出し

  • アプリケーションをエミュレータで起動して、SMS一覧で、データを選択します。SMSデータの中身が表示されています。
  • SMSの中身の表示

以上が、アプリケーション作成の手順です。
ちなみに、SMSデータの中身は、下記のようになっていました。

_id thred_id address person date protocol read status type reply_path_present subject body service_center locked error_code seen
3 2 12345678 null 1312437439277 null 1 -1 2 null null hello:-D null 0 0 1

今回調べたことで、SMSで定型データを送り、それを読み込んで処理をするアプリケーションが作成できそうだと言うことが分かりました。