我只测试了安卓10和安卓14,其它版本没有测试,不知道有没有问题。还只是比较粗糙的初步版本。
一个自动监控系统截图并添加应用包名的Android应用。
- 🔍 自动监控: 后台监控系统新增的截图
- 🏷️ 智能重命名: 自动在截图文件名后添加当前前台应用的包名
- 📱 简洁界面: 一键开始/停止监控
- 🔔 通知提醒: 重命名成功后显示详细通知
- 🔒 权限管理: 完整的权限检查和引导流程
原始截图: Screenshot_20240701_081605.jpg
重命名后: Screenshot_20240701_081605_com.duolingo.jpg
- 媒体访问权限: 读取系统相册中的截图文件
- 写入外部存储权限: 修改外部存储文件,兼容Android 10及以下版本(配合
requestLegacyExternalStorage使用) - 媒体位置权限: 访问媒体文件的位置信息,增强文件处理能力(Android 10+)
- 外部存储管理权限: 完全管理外部存储文件,提供最高级别的文件访问能力(Android 11+)
- 媒体管理权限: 直接管理媒体文件,避免每次重命名都需要用户授权(Android 13+)
- 使用情况访问权限: 获取当前前台应用信息(需在设置中手动开启)
- 通知权限: 显示重命名成功的通知(Android 13+)
- 首次运行时,应用会自动请求媒体、写入存储、媒体位置和通知权限
- 需要手动在系统设置中开启"所有文件访问权限"(推荐,提供最强文件管理能力)
- 需要手动在系统设置中开启"媒体管理"权限(推荐,避免每次授权)
- 需要手动在系统设置中开启"使用情况访问"权限
- 如果没有足够权限,首次重命名时需要用户确认
- 最低版本: Android 8.0 (API 26)
- 目标版本: Android 14 (API 34)
- 测试覆盖: Android 8.0 - 14
- Android 10特殊兼容:
- 使用
requestLegacyExternalStorage="true"绕过分区存储限制 - 配合
WRITE_EXTERNAL_STORAGE权限确保文件写入能力 - 允许应用使用传统的文件系统访问方式
- 使用
- Android Studio Arctic Fox 或更高版本
- Kotlin 1.9.0 或更高版本
- Gradle 8.1.4 或更高版本
- 克隆或下载项目代码
- 使用 Android Studio 打开项目
- 等待 Gradle 同步完成
- 连接设备或启动模拟器
- 点击运行按钮
- 安装应用后,首次启动会要求授予必要权限
- 点击"开始监控"按钮启动截图监控服务
- 使用系统截图功能(如音量键+电源键)
- 首次重命名时,系统会发出通知要求授权,点击通知进行授权
- 授权后,应用会自动重命名截图并显示成功通知
- 可随时点击"停止监控"来停止服务
- 首次重命名权限:由于Android 10+的安全限制,首次重命名其他应用创建的文件时,系统会要求用户授权
- 一次性授权:授权一次后,后续的重命名操作就不需要再次授权
- 通知引导:当需要授权时,应用会发送高优先级通知,点击通知会打开权限授权界面
- 透明界面:权限授权使用透明Activity,不会干扰用户当前操作
- ContentObserver: 监听 MediaStore 变化,检测新增图片
- UsageStatsManager: 获取当前前台应用包名
- MediaStore API: 执行文件重命名操作
- Foreground Service: 确保后台监控的稳定性
MainActivity: 主界面和权限管理ScreenshotWatcherService: 后台监控服务ScreenshotUtils: 截图检测和查询工具UsageStatsUtils: 前台应用获取工具
- 不同厂商的截图目录可能不同(如三星的 DCIM/Screenshots)
- Android 14 上 UsageStatsManager 偶尔会有延迟
- 某些定制系统可能需要额外的权限设置
- 需要用户手动开启"使用情况访问"权限
- 首次重命名需要用户确认写入权限
- 后台监控可能受到系统电池优化影响
- 应用仅读取截图文件名和当前前台应用信息
- 不会上传或分享任何个人数据
- 所有操作均在本地设备完成
- 监控不生效: 检查是否已开启所有必需权限
- 重命名失败: 确认已授予写入权限,尝试重新截图
- 通知不显示: 检查通知权限和系统通知设置
- 服务被杀: 在系统设置中将应用加入白名单
应用使用标签 ScreenshotWatcher 输出调试信息,可通过 logcat 查看:
adb logcat -s ScreenshotWatcher本项目基于思路文档实现,遵循开放源码原则。
欢迎提交 Issue 和 Pull Request 来改进这个项目!
如有问题或建议,请随时联系开发者。