From af1747a18e37f9e7b8ea26b95212396e8584a11a Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 8 May 2020 09:12:04 +0200 Subject: [PATCH] add fetching of Recent calls --- .../dialer/helpers/RecentsHelper.kt | 37 ++++++++++++++++++- .../dialer/models/RecentCall.kt | 2 +- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt index da7864fc..c08c0b5a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt @@ -1,14 +1,47 @@ package com.simplemobiletools.dialer.helpers +import android.annotation.SuppressLint import android.content.Context +import android.provider.CallLog.Calls +import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.dialer.models.RecentCall class RecentsHelper(val context: Context) { + @SuppressLint("MissingPermission") fun getRecentCalls(callback: (ArrayList) -> Unit) { ensureBackgroundThread { - val recents = ArrayList() - callback(recents) + val recentCalls = ArrayList() + if (!context.hasPermission(PERMISSION_READ_CALL_LOG)) { + callback(recentCalls) + return@ensureBackgroundThread + } + + val uri = Calls.CONTENT_URI + val projection = arrayOf( + Calls._ID, + Calls.NUMBER, + Calls.CACHED_NAME, + Calls.DATE, + Calls.DURATION, + Calls.TYPE + ) + + val sortOrder = "${Calls._ID} DESC LIMIT 100" + + context.queryCursor(uri, projection, sortOrder = sortOrder) { cursor -> + val id = cursor.getIntValue(Calls._ID) + val number = cursor.getStringValue(Calls.NUMBER) + val name = cursor.getStringValue(Calls.CACHED_NAME) ?: number + val startTS = (cursor.getLongValue(Calls.DATE) / 1000L).toInt() + val duration = cursor.getIntValue(Calls.DURATION) + val type = cursor.getIntValue(Calls.TYPE) + val recentCall = RecentCall(id, number, name, startTS, duration, type) + recentCalls.add(recentCall) + } + + callback(recentCalls) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/models/RecentCall.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/models/RecentCall.kt index 58737f29..aa92fc99 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/models/RecentCall.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/models/RecentCall.kt @@ -1,3 +1,3 @@ package com.simplemobiletools.dialer.models -data class RecentCall(var phoneNumber: String, var name: String, var startTS: Int, var duration: Int, var type: Int) +data class RecentCall(var id: Int, var phoneNumber: String, var name: String, var startTS: Int, var duration: Int, var type: Int)