V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
winsonwen
V2EX  ›  Android

安卓开发剪贴板问题

  •  
  •   winsonwen · 2022-06-01 14:50:34 +08:00 · 12511 次点击
    这是一个创建于 941 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司想做一个功能,监听剪贴板的实时变化,有新的内容复制时第一时间进行处理。

    我用了这个接口:ClipboardManager.addPrimaryClipChangedListener 问题是只能监听在自己应用中复制出来的内容,无法监听应用外的复制 [实时监听] ,如从微信中复制了一块内容。

    有什么办法能监听到自己应用外的复制情况呢?(不想要通过轮询去读剪贴板的内容的变化)

    还是说这是系统的限制,不给监听自己应用外的复制?

    第 1 条附言  ·  2022-06-06 11:52:22 +08:00
    谢谢大家的评论,学到了很多。
    统一回复一下,老板是想做一个翻译软件,不是什么流氓软件。
    谢谢大家让我得到了我想要的答案:安卓 10 以后无法监听。
    35 条回复    2022-06-06 14:59:23 +08:00
    yfugibr
        1
    yfugibr  
       2022-06-01 14:52:38 +08:00 via Android
    😅
    retrocode
        2
    retrocode  
       2022-06-01 14:56:40 +08:00   ❤️ 1
    你这个实时监听过分了兄弟...这都不只是安全的问题了,
    没辙,现在一般的通用做法是,当应用从后台切前台的时候无脑读一次剪切板然后处理内容,主流的几个应用都是这么做的
    singerll
        3
    singerll  
       2022-06-01 14:57:22 +08:00
    gam2046
        4
    gam2046  
       2022-06-01 14:58:16 +08:00
    降低系统版本可行,Android 10 开始已经不允许后台应用读取剪贴板。

    https://developer.android.com/about/versions/10/privacy/changes?#clipboard-data
    codehz
        5
    codehz  
       2022-06-01 15:05:27 +08:00
    做成输入法然后设置成默认就可以实时读取了
    或者用 https://github.com/Kr328/Riru-ClipboardWhitelist 这个模块( zygisk 也可用)即可让其他软件后台监听剪切板变化了
    yjim
        6
    yjim  
       2022-06-01 15:11:05 +08:00
    啥 APP ?
    learningman
        7
    learningman  
       2022-06-01 15:32:29 +08:00
    要是支持这个功能,你的手机上有几个国产应用,clipboard 上就有几个 listener
    yuyu2140
        8
    yuyu2140  
       2022-06-01 15:59:44 +08:00
    未 ROOT 情况下,普通应用在 Android 10 之后想后台监听剪贴板,几乎不可能。不过前段时间研究了下,做了一个可能让剪贴板只被使用一次的 Android App 。
    几个思路供你参考:
    yuyu2140
        9
    yuyu2140  
       2022-06-01 16:05:02 +08:00
    1. 实现无障碍服务监听全局复制、剪切和粘贴的点击事件 。
    2. 赋予 android.permission.READ_LOGS 权限,同时实现 addPrimaryClipChangedListener 方法,在部分品牌手机上可使用 logcat 捕获复制的 error 日志,实现剪切板的实时响应通知。
    3. 有了剪切板内容变更通知,就可以实现一个透明悬浮窗,使 App 获取到焦点后(即 App 进入前台)然后可以进行剪贴板读取操作,这对于用户是无感知的。
    robot1
        10
    robot1  
       2022-06-01 16:11:58 +08:00
    助纣为虐
    yaocai321
        11
    yaocai321  
       2022-06-01 16:20:53 +08:00
    ???
    sangleft
        12
    sangleft  
       2022-06-01 20:17:42 +08:00
    有没有可能用户并不想让你随时监听?😅
    Buges
        13
    Buges  
       2022-06-01 20:21:11 +08:00 via Android
    我现在对流氓应用完全禁用读取剪贴板,无论前台后台,专门针对那种到前台后立马读取的。
    需要输入的利用 gbord 输入剪贴板的内容。
    cyningxu
        14
    cyningxu  
       2022-06-01 20:49:27 +08:00
    有没有可能你自己也不愿意被任意 APP 监听你所复制的东西?别搞这些了,Android 生态需要大家来维护
    ncepuzs
        15
    ncepuzs  
       2022-06-01 20:54:52 +08:00
    😡😡😡
    lqzhgood
        16
    lqzhgood  
       2022-06-01 21:35:42 +08:00 via iPhone
    我还想做个在其他设备上 Ctrl c
    安卓手机上写入剪贴板的 app 看来也没法做了
    docx
        17
    docx  
       2022-06-01 21:38:40 +08:00 via iPhone
    听我说,谢谢你🐶
    wanacry
        18
    wanacry  
       2022-06-01 21:41:59 +08:00 via iPhone
    这功能能做成 然后用正则分析一下虚拟货币地址的私钥 上传到服务器 还真是美滋滋呢
    kwanzaa
        19
    kwanzaa  
       2022-06-02 04:50:27 +08:00
    啥 APP ,提前拉黑。
    liuidetmks
        20
    liuidetmks  
       2022-06-02 08:57:06 +08:00
    什么公司啊,大智慧,大聪明。
    这种行为,可以去工信部写表扬信的
    wangtian2020
        21
    wangtian2020  
       2022-06-02 09:01:35 +08:00
    抖音天天弹通知但是我又从来不看,有一天火大了,我直接去把它所有权限全关了
    nishuoshenme
        22
    nishuoshenme  
       2022-06-02 09:10:27 +08:00
    是开发者,但也是用户啊兄弟😓
    debuggeeker
        23
    debuggeeker  
       2022-06-02 09:21:24 +08:00
    其实我很理解楼主的想法,比较作为一个开发,接到的只是一个需求,身不由己。
    但是你可以了解下 10 之后的情况,说明下这个系统限制,做不到。要么就是一直轮询,听听产品意见。如果他同意一直轮询,你写代码就是了,没必要纠结漂不漂亮代码了,至于耗电,发热,什么的就别管了,那是需求。
    然后开开心心写完代码过节吧。
    darkengine
        24
    darkengine  
       2022-06-02 10:37:41 +08:00
    @debuggeeker 我都想到加轮询后的结果了:app 在后台被回收导致无法轮询到剪切板的变化,老板 /产品经理提出要做保活 😂
    cyningxu
        25
    cyningxu  
       2022-06-02 10:52:41 +08:00   ❤️ 1
    @darkengine 还有种可能,由于目前国内各系统权限使用越来越清晰了,导致设置里看到 app 疯狂读取剪切板,老板 /产品经理提出功能要继续生效,但系统设置里的读取剪切板要显示为 0
    kuyuzhiqi
        26
    kuyuzhiqi  
       2022-06-02 12:26:53 +08:00
    就是你们这帮公司多了,才会出现各种隐私问题,还好意思在这问
    storyxc
        27
    storyxc  
       2022-06-02 14:02:01 +08:00
    想请问下贵公司的产品是 to C 的吗,如果是的话能否告知个名字,避个雷😅。
    NSAgold
        28
    NSAgold  
       2022-06-02 16:40:23 +08:00 via Android
    @lqzhgood kde connect ( doge )
    安卓 10 之后需要 root 之后解除限制才能让 app 后台读写剪贴板,所以自己写不是完全不可行
    woyaojizhu8
        29
    woyaojizhu8  
       2022-06-03 13:08:30 +08:00
    非法入侵计算机系统罪?
    lqzhgood
        30
    lqzhgood  
       2022-06-05 09:58:43 +08:00 via iPhone
    @NSAgold 国内安卓厂是不是只剩 小米 官方支持 root 了
    debuggeeker
        31
    debuggeeker  
       2022-06-06 09:14:46 +08:00
    @darkengine 2022 年还想保活啊,哈哈哈哈哈,那恭喜你。
    Darkatse
        32
    Darkatse  
       2022-06-06 10:53:04 +08:00
    @lqzhgood 其实早有了,剪纸云+Riru-ClipboardWhitelist
    winsonwen
        33
    winsonwen  
    OP
       2022-06-06 11:45:57 +08:00
    @debuggeeker 谢谢理解,谢谢你的建议,确实身不由已啊。。
    rev1si0n
        34
    rev1si0n  
       2022-06-06 14:27:36 +08:00
    各位其实没必要这么激动,现成的,你手边的淘宝就会在你切到 APP 时把你的剪切板传上去,美其名曰 “淘口令”,实际还是个 GET 请求,真就不担心被自己人日志分析,传的还真就是你剪切板完整内容,恶心的要死。
    sky96111
        35
    sky96111  
       2022-06-06 14:59:23 +08:00
    @lqzhgood 你要找的是不是,KDE Connect
    Android10 以上需要 clipboard-whitelist
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2711 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 12:39 · PVG 20:39 · LAX 04:39 · JFK 07:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.