Andriod保护通讯录的应用

好多应用都要获取读取联系人和短信的权限,不想被读取,能不能不用手机自带的通讯录,用别的通讯录的应用接管电话,这样手机自带的通讯录为空,即使别的应用获取了读取联系人的权限,读取的也是空的通讯录?

APP Ops 配合 Shizuku

XPrivacyLua (需 xposed) 也能使应用读取不到通讯录内容。

应用获取权限后并非只知道去找自带的通讯录应用获取数据,而是你现在用的什么通讯录应用就去找谁。

很合理的需求,但是恐怕并没有可行的方案,因为将创建的联系人信息保存到Contact Storage 才是一个标准Dialer的合理做法,这就无法避免被其他程序读取。
我进行过两次尝试:

  1. 使用 AI DroidAddress Book 存储联系人信息,它不会将联系人资料写回Contact Storage(但它有云同步功能),但它同时也无法在接管来电,无法在来电时显示联系人资料;同时,因为软件本身的bug极多,我并不放心把联系人数据交给它保存。
  2. 阉割上海合合科技(即扫描全能王的开发商)的名片全能王,移除网络访问能力,同时拦截Contacts组权限访问来阻止回写(我为了减少修改造成的崩溃,是用系统原生的AppOps拦截的,没有像网络一样去修改,你还可以抓包把所有跟它有关的网络请求全部记录并用XXX等方式拦截绕开修改安装包的步骤),然后授予其Phone权限组权限使其具有在来电时可以读取号码显示悬浮层,用以展示来电人资料。类似的,还有中国移动旗下和通讯录等软件具有类似功能,但要小心在国产系统上,部分代码比较混乱的ROM可能会直接阻止一切第三方应用在其上展示内容(例如SOS)。缺点是现有的通讯录一般无法直接导入到这类为扫描名片、企业通讯录而设计的工具中,并且靠悬浮层来展示内容私以为并不算一个稳定可行的方案,未来可能会随着Google收紧应用权限而在锁屏界面、通话界面等处出现异常。

所以说,我们还是需要一个新的App或者另一部手机来解决这个问题。

app ops
或者单独开个系统账户,隔离开。

我记得 App Ops 就可以呀

为什么没有一款提供虚拟通讯录的应用呢?只需要保存一条真实的联系人就可以了嘛

谢谢,
我有个思路,比如说魅族flyme 里面有个 隐私模式.我如果刷机后首先进入隐私模式,然后把通讯录导入手机. 然后再退出隐私模式进入正常模式,正常模式下是看不到隐私模式里面的通讯录的.那么正常模式下安装的各种应用,能不能读取隐私模式里的通讯录?

谢谢,
我有个思路,比如说魅族flyme 里面有个 隐私模式.我如果刷机后首先进入隐私模式,然后把通讯录导入手机. 然后再退出隐私模式进入正常模式,正常模式下是看不到隐私模式里面的通讯录的.那么正常模式下安装的各种应用,能不能读取隐私模式里的通讯录?
这和你说的单独账户是不是一回事?

应该不能
猜测所谓的隐私模式就是根据多用户实现的

这种的app工信部可以举报. 立即查封下架.

谢谢,看起来好专业,咱望尘莫及,看不懂呀

App Ops 的问题在于给程序返回空数据,打Android5正式实装就造成了不少崩溃,所以在6流行起来之前,很多App都会将“空”等同于没有权限,反复请求无法使用。后来随着6流行之后到如今的版本迭代,绝大多数都已经删除了这部分处理,然后才有了AppOpsX和AppOps这样的入口的发挥空间(但仍有个别App保留了,而且是大厂商的,我是想不起来名字了,去年发现的,当时我启用了一个新的用户,通讯录真就是空的然后软件拒绝打开)。而且如今MIUI12又重新把这样的处理带回台面上(?我没看发布会也没手机,道听途说这句可能有偏差),那App厂商加回来也不是不可能,那么App Ops就将再次成为废品。
合理的权限限制,还是用应该伪造数据的思路,比如Android2.X时代某P字头的第三方ROM,以及天国的XPrivacy(XPrivacy Lua并不能达成这样的效果)。另外AppCloner这样重新打包的,也因为原作者的种种反盗版手段而难以成为通用解决方案。