隔离 Android 联系提供者

Isolate Android Contact Provider

我想创建一个 Contact Provider,这样我就可以从我们的数据库中填充它,让我们的业务员工拥有所有客户数据。那是 "easy" 部分。

但我需要的是隔离这些联系人并避免他们被克隆,不允许人们 copy/clone 他们并失去对这些信息的跟踪。

有办法吗?我还没有找到这样做的方法,我认为唯一的方法是在自定义联系人应用程序中显示联系人。该解决方案的问题是无法知道谁在呼叫。

Is there a way to do that?

在 Android 设备上,大约有零行代码可以了解您创建的自定义 ContentProvider。如果您不想共享来自该提供商的数据,请不要提供任何 UI 以允许人们共享来自该提供商的数据,并且不要将该提供商导出到第三方应用程序。

I haven't found a way to do that and I think the only way is to show the contacts in a custom Contact app

无论如何你都需要写那个。大约有 20 亿 Android 台设备。 None 他们将拥有一个通讯录风格的应用程序,该应用程序了解您创建的某些自定义 ContentProvider

The problem with that solution is that it wouldn't be possible to know who's calling.

正确。毕竟,设备的呼叫管理器对您的自定义一无所知 ContentProvider.

现在,"create a Contact Provider" 可能是您真正的意思是“ 创建联系提供者”。在这种情况下,"I can populate it from our database and let our business workforce to have all the customer data" 中的 "it" 可能表示标准 Android ContactsContract ContentProvider。在这种情况下,联系人应用程序和通话中屏幕以及与联系人一起使用的所有其他内容都将与您的联系人一起使用。但是,这是系统提供的ContentProvider,导出到第三方应用程序,带有文档等。有数以千计的应用程序可以与 ContactsContract 配合使用,包括预装的和通过 Play 商店和其他地方提供的。你没有办法阻止它,你也没有办法阻止这些应用程序对这些数据做他们想做的事。

IOW,你不能同时满足"I want the Contacts app to have my contacts"和"I do not want the Contacts app to have my contacts"。