サイト移転のお知らせ:http://techbooster.org/に移転しました

ContentProviderで通話履歴を取得する

7月 8, 2011   //   by kkato   //   Android, アプリケーション  //  No Comments

今回はAndroid端末の通話履歴を取得する方法を説明します。

  • 発信履歴
  • 着信履歴
  • 不在着信履歴

これらの情報はContentProviderを用いて取得します。ContentProviderは複数のアプリケーションでデータを共有するための仕組みで、詳細は以下の記事を参考にしてください。

履歴ではなく着信のイベントを取得したい場合は以下の記事も参考にしてください。

それでは続きへどうぞ

URIとパーミッション

ContentProviderからデータを取得するにはURIを指定することになりますが、通話履歴を取得するには

CallLog.Calls.CONTENT_URI

を指定します。

また通話履歴を取得するにはパーミッションの設定が必要なのでAndroidManifest.xmlに忘れずに以下の記述を追加します。

<uses-permission android:name=”android.permission.READ_CONTACTS”/>

取得出来る情報

取得できる主なものとして以下のものがあります。
情報 カラム名
電話番号 NUMBER
名前 CACHED_NAME
日付 DATE
種別(発信、着信、不在着信) TYPE

電話帳に登録されていればCACHED_NAMEで名前を取得することができます。登録されていない番号の場合はnullが入っています。

種別(TYPE)は以下の値が入っています。

  • INCOMING_TYPE – 1:着信
  • OUTGOING_TYPE – 2:発信
  • OUTGOING_TYPE – 3:不在着信

他にも通話時間など取得できる情報があるので詳細はAndroidDeveloperを参照してください。

http://developer.android.com/intl/ja/reference/android/provider/CallLog.Calls.html

サンプルソース

サンプルでは日付、電話番号、名前、種別をログに出力します。
ContentResolver contentResolver = getContentResolver();

// ソートする条件
String order = CallLog.Calls.DEFAULT_SORT_ORDER;

Cursor cursor = contentResolver.query(
 CallLog.Calls.CONTENT_URI,
 null,
 null,
 null,
 order
);

if (cursor.moveToFirst()) {
 do {
 String number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
 String cachedName = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME));
 String type = cursor.getString(cursor.getColumnIndex(CallLog.Calls.TYPE));
 Date date = new Date(cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE)));

 Log.d(TAG, "DATE : " + date);
 Log.d(TAG, "NUMBER : " + number);
 Log.d(TAG, "CACHED_NAME : " + cachedName);
 Log.d(TAG, "TYPE : " + type);
 } while (cursor.moveToNext());
}


関連する記事:

Sponsored Link

Comments are closed.

技術書新刊 発売中

アンドロイドアカデミアには、CIやテスト、互換検証など実務に生きるノウハウをあつめています

技術書新刊 発売中

Android Next!はAndroid 7.0に対応したはじめての技術書です!


The Web Explorer 2はCSSの中央寄せやWebAudioなど未来を読み解く一冊です


Revised TypeScript in DefinitelylandはTypeScript 2.0(β)に対応した解説書です。インストールから型定義まで幅広くサポートしています


技術書をかこう!はエンジニアらしい執筆環境を構築、HowTo本です