DONT READ CLIPBOARD(老名字)
新名字: 英文名:Read Shit 中文名: 剪切板防御器
提供一个快捷方式, 可以将其放在桌面底部Docker:
- 点击后一键复制你的预设内容到剪切板
这样:
- 如果你复制了一些私人的内容, 又不想在打开某些应用时被它读取到
- 给予一些读取剪切板的应用一些嘲笑 网上低价,竟然可以骂出来
- 快捷方式点击后, 还是打开了app, 但是应该不打开app, 直接复制内容即可
- 复制了之后的toast复制的内容时, 应该最多toast一定内容, 剩余的忽略掉
- 配置items不需要名称了,仅保留内容即可
- 现在的拖动框似乎是没有一点作用? 如果实现拖动比较麻烦, 改为 上下按钮的交互方式
- 增加按钮应该有文字说明, 表示是增加项
- 点击快捷方式的toast应该以最快速度消失
- 点击快捷方式时选择哪个item的规则应该是在界面中配置, 而不应该是创建快捷方式时制定
- 增加按钮和列表应该是单独的一个区块, 和创建快捷方式区分开
- 调整界面 "创建桌面快捷方式"在最上面作为一个单独的区域, "快捷方式设置"作为一个单独的区域,并将选择改为类似radiobutton方式
- "添加新内容"和"编辑"的dialog中, input框大小需要根据内容自适应, 最大不超过屏幕的80%, 同时采用手段(比如减少margin padding之类的, 减少字体大小), 让input框内尽可能显示多的内容
- 创建桌面快捷方式,不再弹框,而是直接创建
- 顶部栏增加一个 斜"i"的按钮, 点击显示该软件是干什么的以及怎么用(项目描述的方便理解优化版)
- 当前似乎多语言没有生效, 需要英文. 共有:中文,英文 默认是 英文. 根据系统语言决定
- 应用改名为新名字
- 设置里末尾增加一行 github icon+仓库连接地址
- 由真机运行测试, AGENT(你)只负责修改代码,并确保代码无报错
- 作者不懂kotlin和安卓, 所以极致坚持单一职责原则, 并且为代码附带合理的函数注释和步骤注释
当前是概念验证阶段, 生成方便查看的单一示例, 代码包含详细合理的注释, 提供一些适用于开发者的交互
当前是开发阶段
用于老版本安卓(没有剪切板权限)或屏蔽了剪切板权限的安卓系统的剪切板助手应用。通过桌面快捷方式快速复制预设内容到剪切板。
DontReadClipboard/
├── app/
│ ├── keystore/
│ │ └── my-release-key.keystore # 应用签名密钥
│ ├── src/
│ │ ├── androidTest/
│ │ │ └── java/com/slowgroovin/dontreadclipboard/
│ │ │ └── ExampleInstrumentedTest.kt # 仪器化测试
│ │ ├── main/
│ │ │ ├── java/com/example/dontreadclipboard/
│ │ │ │ ├── MainActivity.kt # 主界面Activity
│ │ │ │ ├── Shortcut
│ │ │ │ │ └── Activity.kt # 快捷方式处理Activity
│ │ │ │ ├── managers/
│ │ │ │ │ └── ShortcutManager.kt # 快捷方式管理器
│ │ │ │ ├── model/
│ │ │ │ │ ├── ClipboardItem.kt # 剪切板项数据模型
│ │ │ │ │ └── ShortcutConfig.kt # 快捷方式配置模型
│ │ │ │ ├── ui/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── ClipboardItemCard.kt # 剪切板项卡片组件
│ │ │ │ │ ├── screens/
│ │ │ │ │ │ ├── MainScreen.kt # 主界面
│ │ │ │ │ │ ├── SettingsScreen.kt # 设置界面
│ │ │ │ │ │ └── ClipboardItemDialog.kt # 对话框组件
│ │ │ │ │ └── theme/
│ │ │ │ │ ├── Color.kt # 颜色主题
│ │ │ │ │ ├── Theme.kt # 应用主题
│ │ │ │ │ └── Type.kt # 字体样式
│ │ │ │ └── utils/
│ │ │ │ └── DataProvider.kt # 数据持久化提供者
│ │ │ ├── res/
│ │ │ │ ├── drawable/ # 图标资源
│ │ │ │ ├── mipmap-anydpi-v26/ # 应用图标
│ │ │ │ ├── values/ # 字符串、颜色等资源
│ │ │ │ ├── values-en/ # 英文字符串资源
│ │ │ │ └── xml/ # 备份规则等配置
│ │ │ └── AndroidManifest.xml # 应用清单文件
│ │ └── test/
│ │ └── java/com/slowgroovin/dontreadclipboard/
│ │ └── ExampleUnitTest.kt # 单元测试
│ ├── build.gradle.kts # 应用级构建配置
│ ├── keystore.properties # 签名配置
│ └── proguard-rules.pro # ProGuard混淆规则
├── gradle/
│ ├── wrapper/
│ │ ├── gradle-wrapper.jar # Gradle Wrapper JAR
│ │ └── gradle-wrapper.properties # Gradle版本配置
│ └── libs.versions.toml # 依赖版本管理
├── AGENTS.md # AI开发助手文档
├── build.gradle.kts # 项目级构建配置
├── gradle.properties # Gradle属性配置
├── gradlew # Gradle Wrapper脚本(Unix)
├── gradlew.bat # Gradle Wrapper脚本(Windows)
├── local.properties # 本地配置(不提交)
└── settings.gradle.kts # 项目设置
app/src/main/AndroidManifest.xml
- 应用清单文件
- 声明应用权限(创建快捷方式)
- 注册MainActivity和ShortcutActivity
- 配置应用主题和图标
app/build.gradle.kts
- 应用级Gradle构建配置
- 定义SDK版本(minSdk 25, targetSdk 36)
- 配置应用签名
- 声明依赖库(Jetpack Compose, Navigation等)
MainActivity.kt
- 主界面Activity
- 使用Jetpack Navigation管理页面路由
- 包含主界面和设置界面两个导航目标
- 提供全局的
copyToClipboard()函数
ShortcutActivity.kt
- 处理桌面快捷方式点击的Activity
- 配置为透明、无历史记录、单实例模式
- 根据复制规则(首位/随机/依次)选择内容
- 复制内容到剪切板并显示Toast提示
- 完成后立即finish,不显示UI
managers/ShortcutManager.kt
- 快捷方式管理器
- 使用ShortcutManagerCompat创建兼容所有Android版本的快捷方式
- 创建指向ShortcutActivity的Intent
- 请求用户将快捷方式固定到桌面
utils/DataProvider.kt
- 数据持久化提供者
- 使用SharedPreferences存储数据
- 管理剪切板项列表(增删改查)
- 管理复制规则配置
- 管理Sequential规则的上次使用索引
- 提供默认示例数据
model/ClipboardItem.kt
- 剪切板项数据模型
- 字段:id, content, order, isFavorite
- CopyRule枚举:FIRST, RANDOM, SEQUENTIAL
model/ShortcutConfig.kt
- 快捷方式配置模型
- 字段:id, name, copyRule
ui/screens/MainScreen.kt
- 主界面
- 顶部:创建桌面快捷方式按钮
- 中部:预设内容管理区域(Card)
- 标题和添加按钮
- 剪切板项列表(支持上下移动排序)
- 对话框:添加/编辑/删除确认
- 使用Jetpack Compose构建
ui/screens/SettingsScreen.kt
- 设置界面
- 快捷方式设置区域(Card)
- 使用RadioButton选择复制规则
- 首位优先:总是复制排序第一的内容
- 随机选择:随机复制一个内容
- 依次循环:按顺序依次复制,循环往复
ui/screens/ClipboardItemDialog.kt
- 对话框组件集合
- ClipboardItemDialog:添加/编辑剪切板项
- 自适应高度输入框(最大屏幕80%)
- 减小字体和间距以显示更多内容
- DeleteConfirmDialog:删除确认对话框
- CreateShortcutDialog:创建快捷方式配置对话框(已废弃)
ui/components/ClipboardItemCard.kt
- 剪切板项卡片组件
- 显示内容预览(超过50字符截断)
- 按钮组:编辑、删除、上移、下移
- 上下移按钮根据位置自动禁用
ui/theme/Color.kt
- Material3颜色主题定义
ui/theme/Theme.kt
- 应用主题配置
- DontReadClipboardTheme组件
ui/theme/Type.kt
- 字体样式和排版配置
res/values/strings.xml
- 中文字符串资源
res/values-en/strings.xml
- 英文字符串资源(多语言支持)
res/values/colors.xml
- 颜色资源
res/values/themes.xml
- 主题资源
res/xml/backup_rules.xml
- 备份规则配置
res/xml/data_extraction_rules.xml
- 数据提取规则配置
- 语言: Kotlin
- UI框架: Jetpack Compose (Material3)
- 导航: Jetpack Navigation Compose
- 数据持久化: SharedPreferences
- 最低SDK: Android 7.1 (API 25)
- 目标SDK: Android 14 (API 36)
- 用户在主界面点击"创建桌面快捷方式"按钮
- MainScreen调用ShortcutManager.createShortcut()
- ShortcutManager创建ShortcutInfoCompat并请求固定快捷方式
- 用户确认将快捷方式添加到桌面
- 用户点击桌面快捷方式
- 系统启动ShortcutActivity(透明、无UI)
- ShortcutActivity从DataProvider获取复制规则和剪切板项列表
- 根据复制规则选择内容:
- FIRST:选择order最小的项
- RANDOM:随机选择一项
- SEQUENTIAL:依次循环选择
- 复制内容到剪切板
- 显示Toast提示(1秒后自动消失)
- Activity立即finish
- 所有数据通过DataProvider统一管理
- 使用SharedPreferences持久化到本地
- 修改数据后立即保存并更新UI状态