罪過 罪過! 爲什麼呢? 想得到通話之後的記錄的 一定不幹好事.. 反正我沒用來幹好事..
觀察者 需要一個URI 電話打完之後都往 contacts2/calls這個表裏面存
private Uri uri = Uri.parse("content://call_log/calls");
註冊觀察者
getContentResolver().registerContentObserver(uri, true, new CallLogObserver(new Handler()));
下面是觀察者 類
public class CallLogObserver extends ContentObserver {
private String content;
private String type = " ";
public CallLogObserver(Handler handler) {
super(handler);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Cursor c = getContentResolver().query(uri, null, null, null, "_id DESC LIMIT 1"); //contacts / call表
if (c.moveToNext()) {
int types = c.getInt(c.getColumnIndex("type")); //電話類型
String date = new SimpleDateFormat("MM-dd_HH:mm").format(new Date(c.getLong(c.getColumnIndex("date")))); //時間
String number = c.getString(c.getColumnIndex("number")); //電話號碼
String name = c.getString(c.getColumnIndex("name")); //聯繫人姓名
String duration = c.getString(c.getColumnIndex("duration")); // 通話時間 秒
switch (types) {
case 1:
type = "接電話";
break;
case 2:
type = "打電話";
break;
case 3:
type = "未接來電";
break;
default:
break;
}
String seconds = secondFormat.Format(Long.parseLong(duration)); //格式化了一下
Log.i(TAG, date + type + name + number+ "時長" + seconds);
}
}
}
public static String Format(long mss) {
// long days = mss / (60 * 60 * 24);
long hours = (mss % (60 * 60 * 24)) / (60 * 60);
long minutes = (mss % (60 * 60)) / 60;
long seconds = mss % 60;
if (mss / (60 * 60 * 24) > 0) {
return " 尼瑪時間太長..超過1天了...";
} else if (hours > 0) {
return " " + hours + "小時" + minutes + "分"
+ seconds + "秒";
} else if (minutes > 0) {
return " " + minutes + "分"
+ seconds + "秒";
} else {
return " " + seconds + "秒";
}
}