Снимок экрана просмотра списка вызовов, который у меня есть прямо сейчас
Я просто не хочу дублировать значения в своей базе данных. Так что одно имя контакта будет отображаться один раз в моем списке, а также я хочу, чтобы количество вызовов было связано с его номером. Я могу получить уникальное значение, используя уникальное ключевое слово при вставке в базу данных через запрос, но у меня нет никаких сведений о подсчете звонков, которые я получаю с этого номера.
Я использую следующий код для получения журналов вызовов из базы данных. Прямо сейчас я просто получаю доступ к журналам вызовов и отображаю их. Я не сохранил в базе данных. Я просто не представляю, как подсчитать количество звонков с определенного номера и показать его перед ним. Как это отображается в приложениях журнала вызовов.
Cursor callLogCursor = getContentResolver().query(
android.provider.CallLog.Calls.CONTENT_URI, null, null, null,
android.provider.CallLog.Calls.DEFAULT_SORT_ORDER);
if (callLogCursor != null) {
while (callLogCursor.moveToNext()) {
String id = callLogCursor.getString(callLogCursor
.getColumnIndex(CallLog.Calls._ID));
String name = callLogCursor.getString(callLogCursor
.getColumnIndex(CallLog.Calls.CACHED_NAME));
String cacheNumber = callLogCursor.getString(callLogCursor
.getColumnIndex(CallLog.Calls.CACHED_NUMBER_LABEL));
String number = callLogCursor.getString(callLogCursor
.getColumnIndex(CallLog.Calls.NUMBER));
long dateTimeMillis = callLogCursor.getLong(callLogCursor
.getColumnIndex(CallLog.Calls.DATE));
long durationMillis = callLogCursor.getLong(callLogCursor
.getColumnIndex(CallLog.Calls.DURATION));
int callType = callLogCursor.getInt(callLogCursor
.getColumnIndex(CallLog.Calls.TYPE));
String duration = getDuration(durationMillis * 1000);
String dateString = getDateTime(dateTimeMillis);
if (cacheNumber == null)
cacheNumber = number;
if (name == null)
name = "";
Uri image = null;
try {
String conId = fetchContactIdFromPhoneNumber(cacheNumber);
long contId = Long.parseLong(conId);
image = getPhotoUri(contId);
}catch(Exception e) {
Log.e("Exception", e.getMessage());
}
CallLogModel callLogModel = new CallLogModel(image, name, cacheNumber,
duration, dateString);
if (callType == CallLog.Calls.OUTGOING_TYPE) {
outgoingList.add(callLogModel);
} else if (callType == CallLog.Calls.INCOMING_TYPE) {
incomingList.add(callLogModel);
} else if (callType == CallLog.Calls.MISSED_TYPE) {
missedcallList.add(callLogModel);
}
}
callLogCursor.close();
}
}
numCall
в модель и проверьте, существует ли уже запись, затем просто найдите (не нужно добавлять) индекс этой модели в списке и увеличьтеnumCall
на 1. - person Ketan Ahir   schedule 24.12.2013I may get unique value by using unique keyword while inserting in database through query
. теперь, если вы можете идентифицировать все уникальные данные, добавьте одно новое поле (numCall) и проверьте, не дублируется ли конкретная запись, а затем просто найдите ее и увеличьте numCall для этой записи. - person Ketan Ahir   schedule 24.12.2013