安卓开发剪贴板问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
winsonwen

安卓开发剪贴板问题

  •  
  •   winsonwen 2022 年 6 月 1 日 16573 次点击
    这是一个创建于 1424 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    https://developer.android.com/about/versions/10/privacy/changes?#clipboard-data
    codehz
        5
    codehz  
       2022 年 6 月 1 日
    做成输入法然后设置成默认就可以实时读取了
    或者用 https://github.com/Kr328/Riru-ClipboardWhitelist 这个模块( zygisk 也可用)即可让其他软件后台监听剪切板变化了
    yjim
        6
    yjim  
       2022 年 6 月 1 日
    啥 APP ?
    learningman
        7
    learningman  
       2022 年 6 月 1 日
    要是支持这个功能,你的手机上有几个国产应用,clipboard 上就有几个 listener
    yuyu2140
        8
    yuyu2140  
       2022 年 6 月 1 日
    未 ROOT 情况下,普通应用在 Android 10 之后想后台监听剪贴板,几乎不可能。不过前段时间研究了下,做了一个可能让剪贴板只被使用一次的 Android App 。
    几个思路供你参考:
    yuyu2140
        9
    yuyu2140  
       2022 年 6 月 1 日
    1. 实现无障碍服务监听全局复制、剪切和粘贴的点击事件 。
    2. 赋予 android.permission.READ_LOGS 权限,同时实现 addPrimaryClipChangedListener 方法,在部分品牌手机上可使用 logcat 捕获复制的 error 日志,实现剪切板的实时响应通知。
    3. 有了剪切板内容变更通知,就可以实现一个透明悬浮窗,使 App 获取到焦点后(即 App 进入前台)然后可以进行剪贴板读取操作,这对于用户是无感知的。
    robot1
        10
    robot1  
       2022 年 6 月 1 日
    助纣为虐
    ClaudeCode
        11
    ClaudeCode  
       2022 年 6 月 1 日
    ???
    sangleft
        12
    sangleft  
       2022 年 6 月 1 日
    有没有可能用户并不想让你随时监听?
    Buges
        13
    Buges  
       2022 年 6 月 1 日 via Android
    我现在对流氓应完全禁用读取剪贴板,无论前台后台,专门针对那种到前台后立马读取的。
    需要输入的利用 gbord 输入剪贴板的内容。
    cyningxu
        14
    cyningxu  
       2022 年 6 月 1 日
    有没有可能你自己也不愿意被任意 APP 监听你所复制的东西?别搞这些了,Android 生态需要大家来维护
    ncepuzs
        15
    ncepuzs  
       2022 年 6 月 1 日
    lqzhgood
        16
    lqzhgood  
       2022 年 6 月 1 日 via iPhone
    我还想做个在其他设备上 Ctrl c
    安卓手机上写入剪贴板的 app 看来也没法做了
    docx
        17
    docx  
       2022 年 6 月 1 日 via iPhone
    听我说,谢谢你
    wanacry
        18
    wanacry  
       2022 年 6 月 1 日 via iPhone
    这功能能做成 然后用正则分析一下虚拟货币地址的私钥 上传到服务器 还真是美滋滋呢
    kwanzaa
        19
    kwanzaa  
       2022 年 6 月 2 日
    啥 APP ,提前拉黑。
    liuidetmks
        20
    liuidetmks  
       2022 年 6 月 2 日
    什么公司啊,大智慧,大聪明。
    这种行为,可以去工信部写表扬信的
    wangtian2020
        21
    wangtian2020  
       2022 年 6 月 2 日
    抖音天天弹通知但是我又从来不看,有一天火大了,我直接去把它所有权限全关了
    nishuoshenme
        22
    nishuoshenme  
       2022 年 6 月 2 日
    是开发者,但也是用户啊兄弟
    debuggeeker
        23
    debuggeeker  
       2022 年 6 月 2 日
    其实我很理解楼主的想法,比较作为一个开发,接到的只是一个需求,身不由己。
    但是你可以了解下 10 之后的情况,说明下这个系统限制,做不到。要么就是一直轮询,听听产品意见。如果他同意一直轮询,你写代码就是了,没必要纠结漂不漂亮代码了,至于耗电,发热,什么的就别管了,那是需求。
    然后开开心心写完代码过节吧。
    darkengine
        24
    darkengine  
       2022 年 6 月 2 日
    @debuggeeker 我都想到加轮询后的结果了:app 在后台被回收导致无法轮询到剪切板的变化,老板 /产品经理提出要做保活
    cyningxu
        25
    cyningxu  
       2022 年 6 月 2 日   1
    @darkengine 还有种可能,由于目前国内各系统权限使用越来越清晰了,导致设置里看到 app 疯狂读取剪切板,老板 /产品经理提出功能要继续生效,但系统设置里的读取剪切板要显示为 0
    kuyuzhiqi
        26
    kuyuzhiqi  
       2022 年 6 月 2 日
    就是你们这帮公司多了,才会出现各种隐私问题,还好意思在这问
    storyxc
        27
    storyxc  
       2022 年 6 月 2 日
    想请问下贵公司的产品是 to C 的吗,如果是的话能否告知个名字,避个雷。
    NSAgold
        28
    NSAgold  
       2022 年 6 月 2 日 via Android
    @lqzhgood kde connect ( doge )
    安卓 10 之后需要 root 之后解除限制才能让 app 后台读写剪贴板,所以自己写不是完全不可行
    woyaojizhu8
        29
    woyaojizhu8  
       2022 年 6 月 3 日
    非法入侵计算机系统罪?
    lqzhgood
        30
    lqzhgood  
       2022 年 6 月 5 日 via iPhone
    @NSAgold 国内安卓厂是不是只剩 小米 官方支持 root 了
    debuggeeker
        31
    debuggeeker  
       2022 年 6 月 6 日
    @darkengine 2022 年还想保活啊,哈哈哈哈哈,那恭喜你。
    Darkatse
        32
    Darkatse  
       2022 年 6 月 6 日
    @lqzhgood 其实早有了,剪纸云+Riru-ClipboardWhitelist
    winsonwen
        33
    winsonwen  
    OP
       2022 年 6 月 6 日
    @debuggeeker 谢谢理解,谢谢你的建议,确实身不由已啊。。
    rev1si0n
        34
    rev1si0n  
       2022 年 6 月 6 日
    各位其实没必要这么激动,现成的,你手边的淘宝就会在你切到 APP 时把你的剪切板传上去,美其名曰 “淘口令”,实际还是个 GET 请求,真就不担心被自己人日志分析,传的还真就是你剪切板完整内容,恶心的要死。
    sky96111
        35
    sky96111  
       2022 年 6 月 6 日
    @lqzhgood 你要找的是不是,KDE Connect
    Android10 以上需要 clipboard-whitelist
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2717 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 98ms UTC 06:13 PVG 14:13 LAX 23:13 JFK 02:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86