应用如何获取我的电话号码以寻找朋友?

Sen*_*nza 6 android cordova

我目前正在开发一个cordova网络应用程序.

我想知道像Runkeeper这样的应用程序如何向我显示我的地址簿的联系人,这些联系人也在使用Runkeeper.每个联系人都有一个小电话符号,所以我猜这个链接是通过电话号码建立的.

Runkeeper从来没有得到我或我朋友的电话号码,但是SIM卡无法读取.

我能想到的唯一可能的方法是,Runkeeper从AccountManager读取我的其他帐户并使用我的WhatsApp-ID建立连接...

有人知道这是怎么回事吗?我可以在我的cordova应用程序中做到吗?

Jua*_*tés 1

Runkeeper根据他们自己的网站读取您的联系人信息。当您安装应用程序时,他们会将您的安装信息以及您的号码或源自您号码的内容(例如加密版本)存储在数据库中。

当您想知道谁拥有该应用程序时,他们会对您的联系人号码进行相同的加密,并与他们拥有的内容相关联。

例如:

User1 : [Phone 1234] 
User2 : [Phone 2341] 
User3 : [Phone 3412]
Run Code Online (Sandbox Code Playgroud)

User1 安装应用程序,Runkeeper 将其号码的 sha1(加盐或未加盐)存储在他们的数据库中:

Runkeeper database of installs:
    7110eda4d09e062aa5e4a390b0a572ac0d2c0220
Run Code Online (Sandbox Code Playgroud)

User2 安装应用程序,Runkeeper 将其号码的 sha1 存储在数据库中:

Runkeeper database of installs:
    7110eda4d09e062aa5e4a390b0a572ac0d2c0220  <-user1
    52c88b165a3a614a5e3ceac0074bad92d5bb1c0a  <-user2
Run Code Online (Sandbox Code Playgroud)

当 User2 加载显示他正在使用该应用程序的联系人的活动时,Runkeeper 会读取您的联系人,然后对于每个联系人,他们都会联系其数据库并进行关联,而无需将您的电话号码或联系人发送到外部。

免责声明

这是一个示例方法,我不知道他们是否这样做。为了清楚起见,它过于简化了。

后续行动 虽然您可能从未向应用程序提供过电话号码,但这并不一定意味着它还没有。自己测试一下这个答案中的代码,检查它是否可读

显然 opSettings / About Phone / Status / My phone Number是空的,谷歌帐户电话号码也是空的,这将是访问它的另一种方式。