作为老师或学校管理者,你是否经常遇到这样的痛点:
👉 学生信息散落在各个Excel表格,查找麻烦;
👉 紧急联系家长时,还要复制号码再拨号,步骤繁琐;
👉 市面上的App要么广告多,要么不够定制化……
今天,给大家分享一款完全开源、无广告、专为校园场景打造的 「学生通讯录」App!更硬核的是,它全程使用 Python + Kivy 开发,并在Android端完美运行。来一起看看它有多好用吧!👇
✨ 核心功能亮点:为校园场景而生
1️⃣ 📞 一键拨号,紧急联系零延迟
录入学生本人、父亲、母亲的电话后,无论是在列表卡片还是详情页,只需点击「拨打」按钮,App直接跳转系统拨号界面。无需复制粘贴,紧急时刻快人一步!
2️⃣ 📊 无缝衔接Excel,批量导入导出
这是本App的灵魂功能!完美适配微信文件选择:
导入:支持直接从微信聊天记录中选取 .xlsx 文件,App自动解析表头(姓名、年级、班级、宿舍、家长电话等),一键批量入库,自动跳过重复姓名。
导出:一键将当前所有学生数据生成为排版精美的Excel表格,并直接调起微信、QQ等分享面板,秒发到工作群或电脑端。
3️⃣ 🔍 即时搜索,信息检索快如闪电
主页内置实时搜索框,输入学生姓名即可瞬间过滤。点击右侧「X」即可清空回到全量列表,找人就那一瞬间的事。
4️⃣ 🎨 清爽卡片UI,交互丝滑
采用现代风卡片式设计,蓝色主调清新专业:
列表卡片展示核心信息,点击卡片查看详情;
详情页支持直接编辑或删除,数据管理一气呵成;
加上导入/导出时的「加载提示弹窗」,再也不用担心操作无反馈卡顿啦!
🛠️ 硬核开发笔记:踩坑与修复
作为Python开发者,把App打包到安卓端并非一帆风顺。这个版本(v2.3.3)我们重点死磕了安卓端的兼容性问题,分享两个关键修复:
微信文件导入无反应:安卓端文件选择回调 on_activity_result 极易被系统回收或绑定失效。我们通过 jnius代理防GC + 多方式回退绑定 + 延迟重试,彻底攻克了这一难题。
导出报错 invalid instance of 'android/net/Uri':这是 jnius 方法重载歧义导致的。我们巧妙地改用 Bundle.putParcelable 替代 Intent.putExtra 传递文件Uri,精准匹配Java方法,修复了分享闪退问题。
💻 保姆级打包指令:从代码到APK
想自己动手编译?只需在 Linux/WSL 环境下,按照以下指令操作即可:
第一步:初始化项目配置
buildozer init
⚠️ 注意:修改生成的 buildozer.spec 文件,在 requirements 中务必加上 et-xmlfile(openpyxl的依赖),否则导出会报错缺库!
requirements = python3,kivy==2.2.1,openpyxl,et-xmlfile,android
第二步:一键打包安卓APK
buildozer android debug
(如果是发布正式版,将 debug 替换为 release)
第三步:提取APK到指定文件夹
打包完成后,APK默认在 bin/ 目录下,使用以下指令复制到桌面或指定路径:
cp bin/*.apk /你的/指定/文件夹路径/
(WSL用户复制到Windows桌面示例:cp bin/*.apk /mnt/c/Users/你的用户名/Desktop/)
📝 写在最后
这款「学生通讯录」不仅是一个实用工具,更是一个完整的 Python 安卓开发实战案例。从UI绘制到安卓原生API调用,从Excel处理到文件分享,它证明了 Python 在移动端依然能打!
💡 免责声明:本应用数据仅保存在本地,不会上传至服务器。请妥善保管学生信息,开发者不承担数据泄露造成的任何损失。
如果你也觉得这个项目有趣,欢迎点赞、在看、转发三连!需要源码的朋友,可以在评论区留言哦~ 👇
夜雨聆风