惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Last Watchdog
The Last Watchdog
S
Securelist
T
Threat Research - Cisco Blogs
Forbes - Security
Forbes - Security
AI
AI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Attack and Defense Labs
Attack and Defense Labs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Know Your Adversary
Know Your Adversary
P
Privacy International News Feed
W
WeLiveSecurity
P
Palo Alto Networks Blog
O
OpenAI News
V2EX - 技术
V2EX - 技术
H
Heimdal Security Blog
L
Lohrmann on Cybersecurity
NISL@THU
NISL@THU
T
Tor Project blog
T
Threatpost
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
云风的 BLOG
云风的 BLOG
人人都是产品经理
人人都是产品经理
A
Arctic Wolf
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Latest news
Latest news
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Tenable Blog
量子位
L
LINUX DO - 最新话题
Webroot Blog
Webroot Blog
F
Fortinet All Blogs
C
CERT Recently Published Vulnerability Notes
Hacker News: Ask HN
Hacker News: Ask HN
U
Unit 42
T
Tailwind CSS Blog
WordPress大学
WordPress大学
N
News | PayPal Newsroom
C
CXSECURITY Database RSS Feed - CXSecurity.com
N
Netflix TechBlog - Medium
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Stack Overflow Blog
Stack Overflow Blog
Cloudbric
Cloudbric
C
Check Point Blog
V
Visual Studio Blog
The GitHub Blog
The GitHub Blog
The Hacker News
The Hacker News
B
Blog

BlogFinder

日常漫步 Vol.24 之漫步前山河 - 雅余 周报 #1-聊聊本周的收获 - Edwin's Blog 我的OpenCode必装插件与Skill Write Something 掌中之物未必在掌握之中 · CRIVU PiliNara,一个更顺手的 PiliPlus 分支 「NekoEcho」:做一个必有回响的猫娘主题博客 2026-05 书影音总结 简化博客主题 - 安迪 你要加油呐 我第一次发布 npm 包 拾花小记#45:中考前的二三事 – 小改学习志 黛西花园5月游 #18 枇杷又熟了的五月月报 一些奇奇怪怪的需求?word仿方正书版的几个小操作 - Xiobb's Blog 0419 御温泉之旅 修复了一些bug,网站基本上趋于稳定了 - 新锐博客 又回到四十年前 如何定义成功 迷鹿屋2026已重新上线 科技冰火两重天+一周回顾 ${title} 热度退了,我反而用得更深了-咕咚同学 我到底该不该换个域名? 随身WIFI折腾记 - 安迪 博客撰写体验提升——hexo pro插件 为什么不用相机把屏幕上的接关密码拍下来? 国清寺与天台山 – Ouroboros ★★★★☆《挽救计划》——久违的经济上行感 - Davidの3号基地 删除右键“打开方式”里多余选项 第三周刊_No.53|一切都会被支付两次 天量下跌 inBox 笔记 2.3.8,把工具栏交给了你-咕咚同学 我把小龙虾搬到了微信-咕咚同学 安好 - 响石潭 Compound Engineering Plugin:让每个工程单元都比上一个更容易 MOSS-TTS Family:开源高质量语音与声音生成模型家族深度解析 Crawl4AI:专为 LLM 设计的开源 Web 爬虫与数据抓取工具 Build Your Own X:从零实现你最喜欢的技术——程序员进阶的终极资源清单 Anthropic Skills:用文件夹教 Claude 专业技能的开源框架 1年的去月球(下) - 梅之夏 欢迎回来。 简单讲讲 ASN.1 与 OID DTV - 直播聚合客户端 5.22-5.27 – 不兴江 还没去过鸭川 – 不兴江 张晶晶同学三刷林志颖 关于我 – 不兴江 爱与嫉妒 – 不兴江 港股被持续做空 备案码花了四百块-咕咚同学 一句话生成封面:我给公众号做了4种风格的AI封面生成技能 「官」方認證 再谈费曼学习法 2026-05-28T00:34:11+08:00 2026-05-28T00:28:45+08:00 离谱的英语学习指南:基于AI的英语进阶系统方法论 iii:零集成架构的后端统一运行时 Claude Code Harness:让 Claude Code 工作有迹可循的工程化框架 Heretic:全自动移除大语言模型审查机制的开源工具 MarkItDown:微软开源的万能文档转 Markdown 利器 Harness:让 Claude Code 秒变多智能体协作工厂 这段时间尽折腾AI Agent了,确实极大地提高了效率 近期动态:两个新站点正式上线啦 误判解除!zhouayuan.com 腾讯安全申诉成功 - 周阿源|玩具设计・插画日常・生活随笔 Ralph:让 AI 编码工具自主循环跑完所有 PRD 任务的量产神器 全都违法 – 个人工作记录 关于zhouayuan.com被误判 “含违规信息” 的说明与申诉记录 - 周阿源|玩具设计・插画日常・生活随笔 小米 MiMo v2.5 Pro 白嫖 最大的人间清醒,兜里有钱,但是不花。 夜晚靓歌(12):于文文现场solo - 王志勇的Blog 今日插画:风扬起的倔强 - 周阿源|玩具设计・插画日常・生活随笔 回门习俗 独立网卡 - 忘记了回忆 500亿入股人工智能企业 从命令行到桌面智能体-咕咚同学 第一性原理读书笔记 行者微评论223-加班の守株待兔-博客|政治与时事-风雨行者 ZOZO开源物理接触求解器:GPU加速的可扩展仿真引擎 OpenStock:开源股票市场交易平台技术深度解析 MoneyPrinterTurbo:基于AI的全自动短视频生成工具深度解析 Claude-Mem:为 Claude Code 构建的持久化记忆压缩系统 Twenty:可代码化定制的企业级开源 CRM 平台技术深度解析 2026-05-26T22:59:17+08:00 企业级开源大模型部署平台 GPUStack 实战教程 1年的去月球(上) - 梅之夏 Sevalla - 静态网站托管服务 不用翻墙、不用注册、不用月费,普通人也能用上 Claude Code 装修灯具要注意⚠️ 黄梅天先锋 - 游子微博 公安备案顺利办结,站点备案全部完成 - 周阿源|玩具设计・插画日常・生活随笔 第三次兑换天猫超市卡了宗宗酱-三维狐少儿编程 Don't think, feel. - Rolen's Blog 人这一辈子,到底图个什么 博客迁移 - Edwin's Blog 情感赛道写作模板 再现本轮行情的典型特征 裁员与平常心-咕咚同学 别让“偷懒”,成为隐私泄露的破绽 片刻 - Jdeal | Life is like a Design.
安卓APP通话记录与录音上传踩坑记录 - 子舒的博客
子舒的博客 · 2026-05-29 · via BlogFinder

做通话录音上传,核心不是简单申请权限后读取文件。本地测试时,很多情况下只申请权限并不能稳定拿到通话记录或录音文件,尤其是 Android 真机环境。通常需要结合原生 Java 能力、打包自定义基座、真机调试来完成。

最近开发内部人员软件项目有个新需求,拿到本机通话记录以及通话录音文件,然后上传到服务器。开始接到这个需求的时候觉得很简单,不就是获取数据,匹配数据,上传数据那一套流程嘛,但是我实际深入进来的时候发现好多坑。由于之前没怎么深入开发过安卓APP,所以踩了很多坑,也是花了好几天时间加上AI分析我才搞定。

就把这几天踩过的坑都记录一下分享出来,下次遇到了可以有效解决,这里只记录思路,具体代码就不赘述了。

做通话录音上传,核心不是简单申请权限后读取文件。本地测试时,很多情况下只申请权限并不能稳定拿到通话记录或录音文件,尤其是 Android 真机环境。通常需要结合原生 Java 能力、打包自定义基座、真机调试来完成。

1. 准备原生能力

通话录音相关能力很多不是纯前端 API 能稳定解决的,尤其包括:

监听通话状态
获取系统通话记录
扫描本地录音文件
读取部分受限目录
处理 Android 厂商差异

所以需要写 Android 原生插件或原生模块,通过 Java 调用系统能力,再暴露给前端使用。

2. 打包自定义基座

本地 H5 或普通运行环境无法测试完整链路。

需要把原生插件打进自定义基座,然后在真机上运行。

大致流程是:

编写 Android 原生插件
配置 manifest 权限
打包自定义基座
安装到真机
前端调用原生插件能力
查看真机日志

这一步很关键。没有自定义基座,很多原生能力不会生效。

3. 申请必要权限

运行时需要申请权限,但权限只是前置条件,不代表一定能拿到数据。

常见权限包括:

READ_PHONE_STATE
READ_CALL_LOG
READ_EXTERNAL_STORAGE
READ_MEDIA_AUDIO
MANAGE_EXTERNAL_STORAGE

还要注意:

Android 版本不同,权限策略不同,部分权限需要跳系统设置页手动开启,所有文件访问权限不是普通弹窗权限,厂商系统可能把权限入口放在不同位置。

4. 获取通话记录

权限通过后,通过 Java 读取系统通话记录。

主要拿到这些信息:

号码
联系人
通话类型
通话开始时间
通话时长
这些数据用于后面和录音文件做匹配。

5. 扫描录音文件

录音文件通常不在通话记录里,需要单独扫描。

扫描方式一般包括:

扫描常见厂商录音目录
通过 MediaStore 查询音频文件
允许用户手动设置录音目录

需要拿到:

文件路径
文件名
文件大小
修改时间
录音时长

6. 匹配通话和录音

通话记录和录音文件需要自己匹配。

常见匹配依据:

手机号
通话开始时间
通话时长
录音文件名
录音文件修改时间

一般不能只靠单一字段,最好结合号码和时间窗口来判断。

7. 判断是否可上传

匹配到录音后,调用后端接口判断这条通话是否允许上传。

如果后端返回可上传所需信息,则允许继续上传;如果没有返回有效信息,则前端显示不可上传。

8. 上传录音文件

先把本地录音文件上传到文件服务,拿到文件地址或文件 ID。

本地录音文件 -> 文件上传接口 -> 文件 URL 这一步只代表文件上传成功,不代表业务录音提交成功。

9. 提交录音数据

拿到文件地址后,再调用业务接口提交录音信息。

通常包括:

手机号
通话类型
通话时长
通话唯一标识
录音文件地址
后端查询接口返回的业务字段

10. 记录上传状态

最后要记录本地状态,避免重复上传。

常见状态:

未上传
已上传
上传失败
不可上传

同时建议保存唯一标识,例如:

手机号 + 通话时间 + 通话类型 用于判断同一条通话是否已经处理过。

总结流程

完整链路可以概括为:

写 Java 原生能力
打包自定义基座
真机安装调试
申请电话和文件权限
读取系统通话记录
扫描本地录音文件
匹配通话和录音
调用接口判断是否可上传
上传录音文件
提交录音业务数据
缓存上传状态

这类功能的重点是:必须真机 + 原生能力 + 自定义基座调试。只靠前端申请权限,通常无法稳定完成通话录音获取和上传。