Android 利用ContentObserver查看通話記錄

罪過 罪過! 爲什麼呢? 想得到通話之後的記錄的 一定不幹好事.. 反正我沒用來幹好事..

觀察者 需要一個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 + "秒";
		}
	}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章