我想在我的应用程序中获得未接电话和未读消息的计数。并且当用户单击计数时,我想打开相关的应用程序。
现在最大的问题是如何获得计数?
我在线搜索,但找不到任何解决方案。
提前感谢。
http://developer.android.com/reference/android/provider/CallLog.Calls.html
看看这个CallLog
类。您所需要做的就是查询电话中是否有任何电话,然后提取未接电话(在查询电话时,在选择参数中执行此操作)。消息也是如此。 SMS存储在"content://sms/"
然后只获取查询返回的游标中的行数。 :)
我希望这会有所帮助。
对于未接来电:
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,
selection,
where,
null,
null
);
c.moveToFirst();
Log.d("CALL", ""+c.getCount()); //do some other operation
if (c.getCount() == SOME_VALUE_TO_START_APP_ONE) //...etc etc
在where子句中,设置数据选择条件。在我们的情况下,我们需要所有类型等于CallLog.Calls.MISSED_TYPE
的东西。我们选择项目的呼叫者姓名和电话号码,当然您可以指定要查询的更多信息,例如手机,住宅,工作电话等号码类型。该表达式等效于SQL查询,类似于:SELECT CACHED_NAME, CACHED_NUMBER_LABEL, TYPE FROM CONTENT_URI WHERE TYPE=MISSED_TYPE
这需要将权限添加到清单中
<uses-permission android:name="android.permission.READ_LOGS"></uses-permission>
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
用于查询短信ContentProvider
:
Uri sms_content = Uri.parse("content://sms");
Cursor c = this.getContentResolver().query(sms_content, null,null, null, null);
c.moveToFirst();
Log.d("SMS COUNT", "" + c.getCount()); //do some other operation
// Here proceed with the what you wanted
if (c.getCount() == SOME_VALUE_TO_START_APP_ONE)//...etc etc
您可以在内容树中更深入,例如指定短信类型,例如:content://sms/sent
或content://sms/inbox
,并为query()
方法的第二个参数添加投影和选择,例如名称,人物,状态消息(例如“通话”示例)。
这需要许可:
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
由于我没有足够的声誉来回答有关@Prasad的问题的评论,所以>
错误-> getContentResolver()对于new Runnable(){} {}
类型是未定义的getContentResolver()是应用程序上下文的一部分,因此,如果您使用的是BroadcastReceiver,请在onReceive()函数中使用上下文,如下所示:>
@Override
public void onReceive(Context context, Intent intent) {
context.getContentResolver()
}
如果您在活动中使用上面的代码,则可以使用
getApplicationContext().getContentResolver()
还请确保使用[Ctrl + Shift + O(O不为零)]组织导入
Key Shortcut for Eclipse Imports
我希望这会帮助您并帮助其他人,也希望这不会违反我们的社区规则。