最終更新:
moonlight_aska 2014年02月16日(日) 20:47:17履歴
発信履歴や着信履歴などの通話ログを取得するには, コールログ(CallLog)クラスとコンテントリゾルバ(ContentResolver)クラスを利用する.
取得できる主な情報
その他に取得できる情報については, Android Developerの以下を参照.
http://developer.android.com/reference/android/pro...
API Level 15以下 : "android.permission.READ_CONTACTS"


- MainActivity.java
- getContentResolverメソッドで, ContentResolverのインスタンスを取得する.
- ContentResolver#queryメソッドで, 第1引数に"CallLog.Calls.CONTENT_URI"を指定して, 通話ログを取得する.
- Cursor#getCountメソッドで, データベースにヒットした件数を取得する.
- Cursor#getColumnIndexメソッドで, 項目を指定してデータを取得する.
- Cursor#closeメソッドで, クローズする.
取得できる主な情報
カラム名 | 情報 |
CACHED_NAME | 名前 |
NUMBER | 電話番号 |
DATE | 日時 |
TYPE | タイプ(発信, 着信, 不在着信) |
DURATION | 通話時間 |
http://developer.android.com/reference/android/pro...
package com.moonlight_aska.android.calllog;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import android.os.Bundle;
import android.provider.CallLog;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
public class MainActivity extends Activity {
ArrayAdapter<String> mAdapter = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
// 通話ログの取得
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(
CallLog.Calls.CONTENT_URI, // データの種類
null, // 項目(null 全項目)
null, // フィルタ条件(null フィルタなし)
null, // フィルタ用パラメータ
CallLog.Calls.DEFAULT_SORT_ORDER // ソート
);
Log.v("CALL", Arrays.toString(cursor.getColumnNames())); // 項目名一覧
Log.v("CALL", "Num = " + cursor.getCount() ); // 取得件数
if (cursor.moveToFirst()) {
do {
// タイムスタンプ
Date date = new Date(cursor.getLong(cursor.getColumnIndex("DATE")));
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
// 名前
String name = cursor.getString(cursor.getColumnIndex("NAME"));
// 電話番号
String number = cursor.getString(cursor.getColumnIndex("NUMBER"));
// アダプタに追加
mAdapter.add("日時:" + dateFormat.format(date)
+ "\n名前:" + name + "\n番号:" + number);
} while (cursor.moveToNext());
}
cursor.close();
ListView listView = (ListView)findViewById(R.id.listview);
listView.setAdapter(mAdapter);
}
}
- AndroidManifest.xml
- パーミッションを設定する.
API Level 15以下 : "android.permission.READ_CONTACTS"
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.moonlight_aska.android.calllog"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.moonlight_aska.android.calllog.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
- 動作例


コメントをかく