Jeric-X / SyncClipboard

跨平台剪贴板同步方案 / Cross-Platform Cipboard Syncing Solution
MIT License
1.43k stars 59 forks source link

[功能请求]请求开发移动端 #24

Open HumanMus1c opened 9 months ago

HumanMus1c commented 9 months ago

非常需要移动端与电脑端进行剪贴板同步

Jeric-X commented 9 months ago

我也很希望有移动端的自动同步,但是无论是苹果和安卓都限制了App在后台操作剪切版的权限,只有手机厂商这个第一方才能提供最丝滑的剪切板同步体验,不少厂商也确实提供了同步方案 其实相比App常驻后台频繁同步用不到的信息然后丢掉,真正同步有用信息的时间可能占比很少,即使能通过某些hack让移动端有自动同步的能力也不是很值当,手动使用自动化工具触发同步脚本已经是比较合适的做法了 如果有第三方工具能做到无缝同步可以告诉我,我会进行参考

HumanMus1c commented 9 months ago

我也很希望有移动端的自动同步,但是无论是苹果和安卓都限制了App在后台操作剪切版的权限,只有手机厂商这个第一方才能提供最丝滑的剪切板同步体验,不少厂商也确实提供了同步方案 其实相比App常驻后台频繁同步用不到的信息然后丢掉,真正同步有用信息的时间可能占比很少,即使能通过某些hack让移动端有自动同步的能力也不是很值当,手动使用自动化工具触发同步脚本已经是比较合适的做法了 如果有第三方工具能做到无缝同步可以告诉我,我会进行参考

目前在用的一款剪贴板软件是“快贴”,它有电脑端和手机端。 电脑端会实时读取当前剪贴板第一条复制信息并同步到官方服务器,手机端会自动同步并设置到剪贴板。 手机端会有一条常驻通知,只要一点击通知就可以同步手机当前复制的信息同步到服务器,电脑端会自动设置到当前剪贴板。 搭建服务器太烧钱了,如果可以利用其他三方存储服务搭建,例如利用WebDAV进行同步剪贴板,利用第三方云盘当作剪贴板服务器。

还在github上找到一个项目支持利用github仓库作为服务器存储剪贴板记录的剪贴板同步工具。 还有一款界面类似快贴的剪贴板项目https://github.com/hluk/CopyQ 希望可以提供到帮助。

Jeric-X commented 9 months ago

看起来快贴可以在后台设置剪切板,但是不能读取,原来安卓文档里的这句话是这么理解的吗,但即使是这样也只能是单向自动同步

除非您的应用是默认输入法 (IME) 或是目前处于焦点的应用,否则它无法访问 Android 10 或更高版本平台上的剪贴板数据。

可能以后会尝试开发安卓端,但没有具体计划

HTTP Request Shortcuts能做的也差不多了,日常使用也是利用通知栏(双向手动),还可以选中文字后直接分享到快捷指令,不会麻烦太多

展开/折叠截图 ![Screenshot_2023-12-11-20-26-11-983_com miui home](https://github.com/Jeric-X/SyncClipboard/assets/10058586/00a6daa7-eef2-42c3-9179-3c8338d215ea) ![Screenshot_2023-12-11-20-32-41-212_com tencent tim](https://github.com/Jeric-X/SyncClipboard/assets/10058586/063f15e7-6daa-4078-9a9e-946dd4f737ec)

至于其他历史记录管理等功能,虽然以前也想过搞不搞,但现在windows都自带剪切板历史记录功能了,还有这么多珠玉在前,肯定不会再考虑了。现在这个仓库存在的意义大概就是因为可以使用WebDAV当服务器了

最后还是感谢你的建议

helloxiangyang commented 9 months ago

同样的需求,微软的 link to windows是支持桌面端和移动端实时双向复制粘贴的,不需手动操作,现在微软 link to windows是符合我需求的,只是担心网络不好时连接不上,或后期下线该功能,所以在寻找候补方案。就微软link to windows来看,安卓api应该是支持后台设置和复制裁剪板内容的。上面说了快贴可以后台设置裁剪板,读取的时候需要手动操作,可能是复制操作没有广播事件导致开发者没有思路不知道何时上传裁剪版内容,然后只能手动操作,如果是这样的话,我考虑可以一直获取裁剪板内容并存起来,当某次获取的内容与上次存的内容不一致时,将内容推到电脑。

附上相关安卓开发者官网有关链接 https://developer.android.com/guide/topics/text/copy-paste?hl=zh-cn#Feedback

helloxiangyang commented 9 months ago

好像跟我想的不一样,这个文章提到android Q以上的手机上当activity页面失去焦点的时候是获取不到剪贴板的数据的,直接返回null。但是好像有解决方案。我对开发了解的很少,不好意思可能有错误的看法。

https://blog.csdn.net/qq_45254908/article/details/121944809

Jeric-X commented 9 months ago

@helloxiangyang 微软的link to windows的跨设备复制粘贴功能只支持限定的几个品牌的手机,猜测是手机厂商与微软合作做了第一方适配,别人可能模仿不了

好像跟我想的不一样,这个文章提到android Q以上的手机上当activity页面失去焦点的时候是获取不到剪贴板的数据的,直接返回null。但是好像有解决方案。我对开发了解的很少,不好意思可能有错误的看法。 https://blog.csdn.net/qq_45254908/article/details/121944809

这篇文章和他参考的文章是在描述切到APP自动识别剪切板内类似taobao链接的功能,由于安卓10的限制导致即使切回也需要延迟一小短时间才能获取到,解决方案是解决这个延迟问题的

有一个比较hack的方案,类似各类跳广告APP,开启一个全局透明悬浮窗,不过这样就有点…… 快贴这么多人在使用,可能已经是最佳实践了

YCJDWCJI commented 8 months ago

Android 10 以上,如果设备有 ROOT,可以用 Magisk 或者 Xposed 模块:

Jeric-X commented 8 months ago

Android 10 以上,如果设备有 ROOT,可以用 Magisk 或者 Xposed 模块:

用autox.js实现了一个简易的自动同步,支持自动下载,自动上传需要安卓10以下或使用这里提到的依赖root权限的工具 https://github.com/Jeric-X/SyncClipboard?tab=readme-ov-file#%E4%BD%BF%E7%94%A8autoxjs

huaxianyan commented 6 months ago

Android 10 以上,如果设备有 ROOT,可以用 Magisk 或者 Xposed 模块:

Android 14 不生效,机器是 Pixel 5,能问一下你的设备和系统吗?

Jeric-X commented 6 months ago

@huaxianyan 不知道你遇到的是不是这个issue里的问题?如果是的话原贴下边有解决方案 https://github.com/Kr328/Riru-ClipboardWhitelist/issues/42

huaxianyan commented 6 months ago

@huaxianyan 不知道你遇到的是不是这个issue里的问题?如果是的话原贴下边有解决方案 Kr328/Riru-ClipboardWhitelist#42

没有,就是单纯的不生效,安装完后在 APP 里选中了 autox.js,但是还是只有主界面切到 autox.js 才会提示工作

forrestgao commented 5 months ago

我自己试着用tasker配好了手动触发方式,电脑端剪贴板变化后如果是文字可以同步到手机剪贴板,如果是文件或图片可以下载到手机指定目录,手机端剪贴板更新文字后也能上传到服务器~ 可是想进一步设置自动触发就比较麻烦了,电脑端和服务器的交互就是每3秒用GET查询,剪贴板变化后PUT提交,手机端如果也每3秒GET查询的话除了监控剪贴板还要监控目录下的文件,如果GET到的是文字就和手机端现在剪贴板内容比较,一致时说明不用无需处理,不一致时则更新剪贴板内容,GET到的是文件或图片就麻烦了,要查看指定目录是否有同名文件并比对md5,在不一致时下载文件。——自动触发上传就麻烦了,基本上只能监测剪贴板的变化,有变化就用PUT同步,可是这样可能会导致多余的PUT上传,比如我是因为检测到服务器侧更新才同步的手机剪贴板,这时候也会触发一次多余的PUT……而且文件不好上传到服务器侧,我用Autoshare发现日志都显示操作成功了,可实际上没法触发,当然了这些需求可能比较小众,估计也没多大的应用场景

wxyShine commented 4 months ago

手机端可以手动触发 kde connect

PianCat commented 5 days ago

看起来快贴可以在后台设置剪切板,但是不能读取,原来安卓文档里的这句话是这么理解的吗,但即使是这样也只能是单向自动同步

除非您的应用是默认输入法 (IME) 或是目前处于焦点的应用,否则它无法访问 Android 10 或更高版本平台上的剪贴板数据。

可能以后会尝试开发安卓端,但没有具体计划

HTTP Request Shortcuts能做的也差不多了,日常使用也是利用通知栏(双向手动),还可以选中文字后直接分享到快捷指令,不会麻烦太多

展开/折叠截图 至于其他历史记录管理等功能,虽然以前也想过搞不搞,但现在windows都自带剪切板历史记录功能了,还有这么多珠玉在前,肯定不会再考虑了。现在这个仓库存在的意义大概就是因为可以使用WebDAV当服务器了

最后还是感谢你的建议

KDE Connect 好像实现了可以在后台获取到剪贴板信息的功能

配合模块使用更好,但是如果不使用模块的话也可以,也就是要声明 android.permission.READ_LOGS 权限和 appops SYSTEM_ALERT_WINDOW 的权限

相关的KDE Connect相关的改动可以查看这个 commit

快贴我之前在用,但是因为Android Q的限制导致没有办法自动同步,我记得Clipto的安卓客户端也有解决这个问题,快贴那边提了建议之后大半年过去了开发者也没有太大的动静,所以现在在找替代方案。

AutoX 方面,我单独让AutoX声明了相关的权限,希望有用,正在测试中

十分感谢大佬您开发一个可以私人化部署的剪贴板同步工具。