让便签直接显示在手机通知栏,最大化效率,最小化干扰。

在通知栏直接创建、查看、管理便签——不打开 App 就能随手记录和回顾。
| 特性 |
说明 |
| 便签直显 |
便签内容直接展示在通知栏,不用打开 App |
| Blue UI |
蓝色半透明渐变背景 + 白色文字,清晰醒目 |
| 时间标记 |
每条便签显示相对时间:现在 / X分钟前 / 今天 / MM-dd |
| 独立平铺 |
每条便签独立通知,不折叠,一屏全览 |
| 操作 |
方式 |
| 新建便签 |
点击任意通知 → 弹出输入框 → 输入内容 → 保存 |
| 隐藏便签 |
点击通知右侧 ✕ 按钮 → 从通知栏移除(数据保留) |
| 悬浮输入 |
主界面「悬浮窗输入」→ 桌面任意位置呼出输入框 |
| 编辑便签 |
主界面点击便签 → 编辑内容 / 切换固定状态 |
- 固定的便签带
FLAG_NO_CLEAR | FLAG_ONGOING_EVENT,清理通知时不会被移除
- 重启手机后自动恢复显示
- 适用于待办事项、购物清单等需要长期提醒的场景
- 支持设置提醒时间:精确到分钟
- 多级重复规则:
- 不重复 — 单次提醒
- 每天 — 按日循环
- 每周 — 按周循环
- 每月 — 按月循环
- 自定义间隔 — 指定小时数重复
- 支持设置重复次数(1~N 次或无限次)
| 功能 |
说明 |
| 隐藏 / 恢复 |
从通知栏隐藏(保留数据),应用内「已移除」分区可一键恢复 |
| 永久删除 |
彻底清除数据,不可恢复 |
| 批量清空 |
「清空全部」一键清除所有隐藏便签 |
| 导出 JSON |
系统文件选择器 → 选择目录 → 保存 通知栏便签备份_日期.json |
| 机制 |
说明 |
| 前台服务 |
NotificationForegroundService 保持通知不丢失 |
| 开机自启 |
BootReceiver + directBootAware + 国产 ROM 兼容广播 |
| 电池白名单 |
自动跳转系统设置,引导用户关闭电池优化 |
| 厂商优化 |
支持小米/华为/OPPO/Vivo/三星自启动管理页面自动跳转 |
┌── 通知栏 ──────────────────────────┐
│ │
│ ┌────────────────────────────────┐ │
│ │ 翻译 · 现在 [✕] │ │ ← 蓝色渐变背景
│ ├────────────────────────────────┤ │
│ │ 背单词 · 3分钟前 [✕] │ │
│ ├────────────────────────────────┤ │
│ │ 看书 · 今天 [✕] │ │
│ └────────────────────────────────┘ │
│ │
└────────────────────────────────────┘
┌── 主界面 ──────────────────────────┐
│ 📌 通知栏便签 │
│ ├─ 翻译 📌固定 │ ← 可点击编辑
│ ├─ 背单词 📌固定 │
│ ├─ 看书 │
│ ───────────────────────────────── │
│ 🗑️ 已从通知栏移除 │
│ ├─ 旧便签1 [恢复] [删除] │
│ └─ 旧便签2 [恢复] [删除] │
│ ───────────────────────────────── │
│ [清空全部] │
│ [➕ 大按钮] │
└────────────────────────────────────┘
Kotlin + Jetpack Compose + Material 3
├── 数据层: Room (SQLite)
├── 服务层: Foreground Service + WorkManager + BroadcastReceiver
├── 通知层: 自定义 RemoteViews + NotificationCompat
└── 导出: Gson + SAF CreateDocument
| 组件 |
职责 |
NotificationHelper |
通知创建/更新/删除,RemoteViews 布局 |
NotificationForegroundService |
START_STICKY 前台服务,保活通知 |
BootReceiver |
开机+国产 ROM 广播监听,重启服务 |
OverlayInputService |
悬浮窗输入框,桌面快速添加 |
ReminderWorker |
WorkManager 定时提醒调度 |
JsonExportUtil |
JSON 导入/导出/分享 |
MainViewModel |
便签 CRUD + 隐藏/恢复/删除管理 |
AddEditDialog |
Compose 对话框,支持滚动 |
ReminderDialog |
Compose 提醒设置,支持滚动 |
详细架构见 docs/ARCHITECTURE.md
- JDK: 21+
- Android SDK: compileSdk 34, minSdk 26
- Gradle: 8.5+
export JAVA_HOME="你的 JDK 路径"
./gradlew clean assembleDebug
# 输出: app/build/outputs/apk/debug/app-debug.apk
- 打开应用 → 授予通知权限(Android 13+)
- 弹出电池优化 → 点击允许
- 国产手机 → 进入自启动管理 → 开启开关
- 如需悬浮窗 → 主界面点击「悬浮窗输入」→ 授权
NotificationNotes/
├── app/src/main/java/com/example/notificationnotes/
│ ├── data/ # Room 数据层
│ ├── service/ # 通知、前台服务、广播接收器
│ ├── ui/ # Compose UI(主界面、对话框、主题)
│ ├── util/ # JSON 工具
│ └── MainActivity.kt
├── docs/ # 需求、架构、设计、构建文档
├── devlog/ # 开发日志、待办事项
├── CLAUDE.md # AI 助手指引
└── build.gradle.kts # 构建配置
app/build.gradle.kts:
versionCode = 4
versionName = "4.0.0"
compileSdk = 34
minSdk = 26
| 版本 |
关键更新 |
| v4.0 |
独立通知平铺、✕ 隐藏按钮嵌入、ID 冲突修复、CreateDocument 导出、厂商自启引导 |
| v3.0 |
SAF 路径选择导出、后台持久化服务 |
| v2.0 |
通知分组、隐藏/恢复/删除分层操作、开机自启 |
| v1.0 |
初始版本:便签 CRUD、Sticky、悬浮窗、提醒、JSON 导出 |