如何从SQLite(Android)的CallLog.Calls表中检索号码?
例如,如果1234567890号码表中有10个通话记录,我需要最新的通话记录。目前,我正在通过检查单独函数中的重复项来做到这一点。
是否有任何方法可以过滤查询本身?
String[] projection = {CallLog.Calls.NUMBER, CallLog.Calls.DURATION,
CallLog.Calls.DATE, CallLog.Calls.TYPE};
Cursor cursor= getContentResolver().query(CallLog.Calls.CONTENT_URI,
projection, null, null, CallLog.Calls.DATE + " DESC");
然后您可以基于:-
查询SELECT * FROM calllog WHERE callNumber = '1234567890' ORDER BY callDate DESC LIMIT 1;
CREATE TABLE IF NOT EXISTS calllog (callNumber TEXT, callDuration INTEGER, callDate TEXT, callType TEXT);
INSERT INTO calllog VALUES
/* log entries for wanted number */
('1234567890', 30, '2019-01-01 10:30','mobile'),
('1234567890', 10, '2019-01-01 12:30','mobile'),
('1234567890', 5, '2019-01-02 10:30','mobile'),
('1234567890', 30, '2019-01-03 10:30','mobile'),
('1234567890', 30, '2019-01-04 10:30','mobile'),
/* other log entries to exclude */
('1234567899', 30, '2019-01-01 10:30','mobile'),
('1234567899', 10, '2019-01-01 12:30','mobile'),
('1234567899', 5, '2019-01-02 10:30','mobile'),
('1234567899', 30, '2019-01-03 10:30','mobile'),
('1234567899', 30, '2019-01-04 10:30','mobile')
;
SELECT * FROM calllog WHERE callNumber = '1234567890' ORDER BY callDate DESC LIMIT 1;
以上结果为:-