android - 如何获得未接来电和短信计数

标签 android events sms counter

我想在我的应用程序中获取未接来电和未读消息的计数。我想在用户点击计数时打开相关应用程序。

现在最大的问题是如何得到计数?

我在网上搜索但找不到任何解决方案。

提前致谢。

最佳答案

http://developer.android.com/reference/android/provider/CallLog.Calls.html

看看这个 CallLog 类。您所需要做的就是查询电话中的任何电话,然后提取未接电话(或在查询电话时在选择参数中执行此操作)。这同样适用于消息。 SMS 存储在 Content Provider 下的 "content://sms/"

然后只需获取查询返回的 Cursor 中的行数。 :)

希望对您有所帮助。

对于未接来电:

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

这需要在 list 中添加权限

<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/sentcontent://sms/inbox 和为 query() 方法的第二个参数添加投影和选择,例如姓名、人员、消息状态(如 Calls 示例)。

这需要许可:

<uses-permission android:name="android.permission.READ_SMS"></uses-permission>

关于android - 如何获得未接来电和短信计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7621893/

相关文章:

android - 带Camera2的Android RTL

android - Loader 和 LoaderManager - 如何判断加载是否出错

asp.net - log4Net EventlogAppender 不适用于 Asp.Net 2.0 网站?

php - 对加拿大 SMS 网关提供商的建议

html - 带有正文的 HTML 超链接中的 iOS SMS 方案

azure - 使用 Azure AD B2C 的短信功能

android - 拍照后如何从 ImageView 保存图像

android - 检测 AppWidget 上的 OnTouch。如果可能的话?

javascript - 堆分析的脚本代码有什么作用?

javascript - 如何在没有框架的情况下将点击绑定(bind)到 anchor (javascript)