
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中最频繁的值条目的数量?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)