android– 如何获取callLog.calls中最频繁的值条目的数量?

android– 如何获取callLog.calls中最频繁的值条目的数量?,第1张

概述CallLogCallsentryisthis-NameNumberTYPEdatecalled-Jed12345Incoming7-18-2013-Roger14611Incoming7-18-2013-Jed12345Incoming7-18-2013-Jed

Call Log Calls entry is this - name        Number         TYPE          date called - Jed         12345          Incoming      7-18-2013 - Roger       14611          Incoming      7-18-2013 - Jed         12345          Incoming      7-18-2013 - Jed         12345          Incoming      7-18-2013 - Kevin       11111          Incoming      7-18-2013

嗨,我想在androID中查询,我只会检索
Jed,12345<<因为他在列表中具有最重复的价值,
我想在sqlite(androID查询)中这样做但我不知道要调用哪些函数
这是我使用的代码,但我只能得到最近调用的号码,而不是具有最多条目的号码.我怎么做这个问题?

    Date date=new Date() ;      Cursor c = contxt.getContentResolver().query(CallLog.Calls.CONTENT_URI,            null, CallLog.Calls.TYPE + " AND " + CallLog.Calls.INCOMING_TYPE +             " AND " + CallLog.Calls.Date + ">=" + date.getDate() ,            null,            CallLog.Calls.DATE + " DESC liMIT 1");    if(c!=null)        do{            int callCounter = c.getCount();            String num = callLog_cursor.getString(callLog_cursor                .getColumnIndex(androID.provIDer.CallLog.Calls.NUMBER));        }while(c.movetoFirst());

解决方法:

如果你正在寻找一个单独的查询来完成这项工作,我很遗憾地说它(就我的谷歌技能而言)并不存在.我用另一种你可能觉得有用的方式解决了它.

在您的活动中的某个位置创建此功能:

public static voID searchAnddisplay(ArrayList<String> arr) {    ArrayList<String> List1 = new ArrayList();    ArrayList<Integer> List2 = new ArrayList();    for (int i = 0; i < arr.size(); i++) {        int index = List1.indexOf(arr.get(i));        if (index != -1) {            int newCount = List2.get(index) + 1;            List2.set(index, newCount);        } else {            List1.add(arr.get(i));            List2.add(1);        }    }    for (int i = 0; i < List1.size(); i++) {        System.out.println("Number " + List1.get(i) + " occurs "                + List2.get(i) + " times.");    }    int maxCount = 0;    int index = -1;    for (int i = 0; i < List2.size(); i++) {        if (maxCount < List2.get(i)) {            maxCount = List2.get(i);            index = i;        }    }    System.out.println("Number " + arr.get(index)            + " has highest occurrence i.e " + maxCount); // here you might want to do something/return the number with the highest occurences. }

然后你想要光标你使用这个:

    Date date = new Date();    ArrayList<String> allnumbers = new ArrayList();    Cursor c = this.getContentResolver().query(            CallLog.Calls.CONTENT_URI,            null,            CallLog.Calls.TYPE + " AND " + CallLog.Calls.INCOMING_TYPE                    + " AND " + CallLog.Calls.DATE + ">=" + date.getDate(),            null, CallLog.Calls.NUMBER);    allnumbers.clear();    if (c != null)        c.movetoFirst();    for (int i = 0; c.getCount() > i; i++) {        String number1 = c.getString(0);        allnumbers.add(number1);        c.movetoNext();    }    searchAnddisplay(allnumbers);

您可能需要仔细检查您收到的数字是否正确.

让我知道事情的后续. 总结

以上是内存溢出为你收集整理的android – 如何获取callLog.calls中最频繁的值条目的数量?全部内容,希望文章能够帮你解决android – 如何获取callLog.calls中最频繁的值条目的数量?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1099575.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存