夺回你的剪贴板
Android 12 更新带来的一个小众功能,就是躲在隐私设置中的「剪贴板访问警告」。开启后,每当有应用读取你剪贴板,都会弹出这样一个提示:
如果你开启了这个功能(我这里默认是关闭的),就会发现
怎么有这么多 app 1都在无缘无故读剪贴板!
早就听说很多应用会偷摸读取剪贴板,但本人是没有太注意过。
手机也没啥其他重要的隐私信息可以复制?
但有了这个功能之后,每天看着屏幕下边蹦 toast ,确实觉得这个行为挺流氓的。
既然这样,干脆把重点 app 的剪贴板权限关闭好了。
剪贴板权限
我们要关心的权限有两个:READ_CLIPBOARD
和WRITE_CLIPBOARD
,默认值都是allow
2。
这里有个问题,如果安卓真的在乎剪贴板隐私,又为什么要默认允许应用随意读写用户的剪贴板呢?
其实很简单:安卓的剪贴板框架并不知道收到的请求是有用户主动操作,还是应用偷摸发起的。毕竟,你长按文本框出现的菜单,很可能是应用自己实现的。
想要在应用里正常复制和粘贴文本,就必须给这两个权限,而应用拿到这两个默认不需要询问直接允许的权限,自然是想干嘛干嘛。
还有些流氓程序为了跨应用追踪,往用户的剪贴板里丢垃圾,可以说是比偷剪贴板更恶心: 这种可以直接关掉该应用的剪贴板写权限。
使用adb撤销权限
此处默认你已经安装了adb
,并且可以正常连接手机。安装过程相见官方文档
先看一下到底有那些应用有READ_CLIPBOARD
权限(另一个同理):
❯ adb shell cmd appops query-op --user 0 READ_CLIPBOARD allow
com.sec.android.app.desktoplauncher
com.google.android.apps.maps
...省略100行
我是没有那么多乱七八糟的应用,只有少数行为可疑需要处理。
撤销权限:
adb shell cmd appops set "com.example.app" READ_CLIPBOARD ignore
这里包名换成你自己的。
闲的没事还整了个批量修改的 one-liner ,有需要可以复制粘贴:
echo "Type in one app name on each line, then send EOF(ctrl+D twice)";echo "$(</dev/stdin)" | xargs -I {} adb shell cmd appops set {} READ_CLIPBOARD ignore
大概就这样了吧。
注意
在撤销READ_CLIPBOARD
权限之后,在该应用中没法使用 长按悬浮窗-粘贴 或者 IME键盘 中的粘贴按钮。
但亲测某些输入法(Gboard)的剪贴板历史中可以正常点击粘贴,不是很影响使用。
没有WRITE_CLIPBOARD
权限无法复制文本,这个没找到方法绕过。