gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:50:07 25 4
gpt4 key购买 nike

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

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

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

提前致谢。

最佳答案

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com