安卓如何获取未接来电

3

我想获取未接来电的数量,就像电话应用程序在通知栏中显示的那样。

于是我编写了以下代码:

String[] projection = { CallLog.Calls.CACHED_NAME, CallLog.Calls.CACHED_NUMBER_LABEL, CallLog.Calls.TYPE };
String where = CallLog.Calls.TYPE+"="+CallLog.Calls.MISSED_TYPE;          
Cursor c = this.getContentResolver().query(CallLog.Calls.CONTENT_URI,projection,where, null, null);
c.moveToFirst();    
Log.d("CALL", ""+c.getCount()); //do some other operation

if(c.getCount() > 0)//...etc etc
    Toast.makeText(app.this,String.valueOf(c.getCount()), Toast.LENGTH_LONG).show(); 

这段代码给出了所有未接来电的总数,但我只想要最新的那些通话,它们显示在通知栏中。

有人有任何想法如何实现吗?

3个回答

2
String PATH = "content://call_log/calls";

String[] projection = new String[] { CallLog.Calls.CACHED_NAME,
                CallLog.Calls.NUMBER, CallLog.Calls.DATE, CallLog.Calls.TYPE };

String sortOrder = CallLog.Calls.DATE + " DESC";

StringBuffer sb = new StringBuffer();
sb.append(CallLog.Calls.TYPE).append("=?").append(" and ").append(CallLog.Calls.IS_READ).append("=?");

Cursor cursor = context.getContentResolver().query(
                Uri.parse(PATH),
                projection,
                sb.toString(),
                new String[] { String.valueOf(Calls.MISSED_TYPE), "0" },sortOrder);

https://play.google.com/store/apps/details?id=com.meaning36.msreminder


2
通常最好在代码块中添加一些关于为什么/如何工作的描述,而不仅仅是代码本身。 - Wain

2

你能给我一个例子吗? - user1426956
1
我正在开发API 8,因此无法使用IS_READ。 - user1426956
所以尝试新的...在你的where语句中添加+“AND NEW = 1”。 - Ran

0

gc hong发布的代码如何显示最新的未接来电?它的工作非常正确,但它是如何实现的呢?

String PATH = "content://call_log/calls";

String[] projection = new String[] { CallLog.Calls.CACHED_NAME,
            CallLog.Calls.NUMBER, CallLog.Calls.DATE, CallLog.Calls.TYPE };

String sortOrder = CallLog.Calls.DATE + " DESC";

StringBuffer sb = new StringBuffer();
 sb.append(CallLog.Calls.TYPE).append("=?").append(" and 
").append(CallLog.Calls.IS_READ).append("=?");

Cursor cursor = context.getContentResolver().query(
            Uri.parse(PATH),
            projection,
            sb.toString(),
            new String[] { String.valueOf(Calls.MISSED_TYPE), "0" 
},sortOrder);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接