Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >android broadcastreceiver中找不到新的通话记录

android broadcastreceiver中找不到新的通话记录
EN

Stack Overflow用户
提问于 2016-09-19 19:29:10
回答 1查看 521关注 0票数 0

我正在工作的android应用程序,需要电话被记录在服务器上,当然是个人使用。我已经为此目的注册了broadcastreceiver,我能够检测所有类型的呼叫及其详细信息。然而,不可能检测到准确的呼出时间,也就是说,我们可以检测到完全的OFFHOOK时间,因为它不是精确的通话时长。因此,只有在去电结束的情况下,我才会尝试从呼叫日志历史记录中读取记录。我可以从broadcastreceiver中读取呼出呼叫结束的呼叫日志历史记录,但在呼叫日志条目中看不到当前收到的呼叫条目。我可以在呼叫历史记录中看到所有以前的呼叫,但不能看到我接收到broadcastreceiver的呼叫。我在我的代码中使用了来自here的Gabe Sechan示例。我尝试在outgoingcallended方法中读取最新的调用历史,如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    ContentResolver crs = globalContext.getContentResolver();
    Cursor cr = getAllCallLogs(crs);
    if(cr.moveToFirst()){
       duration = cr.getString(cr
                .getColumnIndex(android.provider.CallLog.Calls.DURATION));
        callNumber = cr.getString(cr
                .getColumnIndex(android.provider.CallLog.Calls.NUMBER));
       

    }
    private Cursor getAllCallLogs(ContentResolver cr) {
    // reading all data in descending order according to DATE
    String strOrder = android.provider.CallLog.Calls.DATE + " DESC";
    Uri callUri = Uri.parse("content://call_log/calls");
    Cursor cur = cr.query(callUri, null, null, null, strOrder);

    return cur;
    }

但callNumber是以前的呼叫号码,而不是我收到broadcastreciver的号码,持续时间也是如此。我知道,当我尝试读取呼叫日志时,它没有更新,那么我如何解决这个问题?我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-20 05:27:54

您必须在getContentResolver()之前添加一些延迟,以便更新该表。您可以添加Thread.sleep(),也可以使用handler。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void loadCursorPostDelayed(){
    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {

            ContentResolver crs = globalContext.getContentResolver();
            ...
        }
    }, 1500);
}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39580668

复制
相关文章
Android中BroadcastReceiver广播
BroadCastReceiver 简介 广播接收者( BroadcastReceiver )用于接收广播 Intent ,广播 Intent 的发送是通过调用 Context.sendBroadcast() 、 Context.sendOrderedBroadcast() 来实现的。通常一个广播 Intent 可以被订阅了此 Intent 的多个广播接收者所接收。  广播是一种广泛运用的在应用程序之间传输信息的机制 。而 BroadcastReceiver 是对发送出来的广播进行过滤接收并响应的一类组件;
欢醉
2018/01/22
9750
android broadcastReceiver组件
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.a
week
2018/08/27
3360
Android Service 服务(二)—— BroadcastReceiver
BroadcastReceiver,用于异步接收广播Intent,广播Intent是通过调用Context.sendBroadcast()发送、BroadcastReceiver()接收。
阳光岛主
2019/02/19
1.6K0
android开发(十九) BroadcastReceiver应用详解
本文源自:http://blog.csdn.net/liuhe688/article/details/6955668
Java架构师必看
2021/05/27
8870
浅谈android Service和BroadCastReceiver
1.题记        Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。        广播接收者(BroadcastReceiver)用于接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()来实现的。通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收,这个特性跟JMS中
10JQKA
2018/05/09
2.1K0
浅谈android Service和BroadCastReceiver
Android:BroadcastReceiver广播注册方式汇总
当此App首次启动时,系统会自动实例化mBroadcastReceiver类,并注册到系统中。
Carson.Ho
2019/02/22
2.8K0
Android 广播「BroadcastReceiver」接收不到「Intent」的信息
我们在工作的过程中,经常会使用到 BroadcastReceiver 机制,用来向活动发送消息,更新服务内的数据信息。但是我在这一过
圆号本昊
2021/09/24
1.4K0
Android 广播「BroadcastReceiver」接收不到「Intent」的信息
Android查缺补漏--BroadcastReceiver的类型与使用
codingblock
2017/12/29
7180
Android 四大组件之BroadcastReceiver
Hi,大家好,又双见面啦,上一期我们讲了如何使用Activity,肯定有不少小伙伴已经创建了属于自己的FirstActivity,那么这一期我们主要为大家介绍第二个重要组件-BroadcastReceiver(广播接收器)。作为Android的四大组件之二,其应用场景非常多。下面,就详细介绍下 BroadcastReceiver 的相关知识。
下码看花
2019/09/02
1.5K0
Android 四大组件之BroadcastReceiver
Android-Picasso 库中找不到 .with() 方法
最后附上源码:https://github.com/FishInWater-1999/AndroidClockDemo
圆号本昊
2021/09/24
8230
Android-Picasso 库中找不到 .with() 方法
【Android 安全】DEX 加密 ( Application 替换 | 分析 BroadcastReceiver 组件中调用 getApplication() 获取的 Application )
在 BroadcastReceiver 中的 onReceive 方法中的 Context context 参数 , 打印出来是 android.app.ReceiverRestrictedContext 类型的 , 调用该对象的 getApplicationContext() 方法 , 获取的 Application , 就是用户自定义的 Application ;
韩曙亮
2023/03/29
1.2K0
Android学习笔记(十)BroadcastReceiver初体验
  BroadcastReceiver是Android系统的四大组件之一,本质是一种全局的监听器,用于接收系统全局的广播消息。真因为如此,BroadcastReceiver可以很方便的是实现系统中不同
codingblock
2017/12/29
5330
如何监控别人的手机
关于大家一直说怎么使用,我来简单的说明一下吧,讲工程文件中的apk文件安装在你想监控的人的手机中,然后随便找个手机给他
知识与交流
2023/03/25
2.2K0
如何监控别人的手机
Android 四大组件学习之BroadcastReceiver二
上节学习了如何创建一个广播,也尝试接受系统打电话的广播。本节课学习如何自定义广播。自定义广播实质上也就是创建一个发送广播者,创建一个接受该广播者。
DragonKingZhu
2022/05/08
1920
Android 四大组件学习之BroadcastReceiver二
点击加载更多

相似问题

如何从broadcastreceiver打开通话记录

11

Android broadcastreceiver创建新实例

20

Android活动找不到异常和BroadcastReceiver

10

android中的通话记录代码

32

Android编辑通话记录

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文