android - 应用程序如何获取我的电话号码以查找 friend ?

标签 android cordova

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

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

Runkeeper 从未获得过我或我 friend 的电话号码,而且无法从 SIM 卡中读取。

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

有人知道这是怎么发生的吗?我也可以在我的 cordova 应用程序中这样做吗?

最佳答案

Runkeeper 读取您的联系人as per their own website .当您安装该应用程序时,他们会将您的安装与您的号码或源自您号码的内容(例如加密版本)一起存储在他们的数据库中。

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

例如:

User1 : [Phone 1234] 
User2 : [Phone 2341] 
User3 : [Phone 3412]

用户 1 安装应用程序,Runkeeper 在他们的数据库中存储他的号码的 sha1,无论是否加盐:

Runkeeper database of installs:
    7110eda4d09e062aa5e4a390b0a572ac0d2c0220

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

Runkeeper database of installs:
    7110eda4d09e062aa5e4a390b0a572ac0d2c0220  <-user1
    52c88b165a3a614a5e3ceac0074bad92d5bb1c0a  <-user2

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

免责声明

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

跟进 虽然您从未向应用程序提供电话号码可能是真的,但这并不一定意味着它已经没有。自己测试 this answer 中的代码检查它是否可读

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

关于android - 应用程序如何获取我的电话号码以查找 friend ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36558881/

相关文章:

java - java(android)中的正则表达式可防止除一个之外的其他网址

java - 如何在android中选择动态内容中的特定行

javascript - PhoneGap后台插件使用

android - Meteor cordova 应用程序不进行热代码推送

ios - 在 phonegap IOS 上重启应用程序后本地存储被清除?

cordova - 警告 : No emulator specified, 默认为 "avd_name"

android - apk 编译时 buildozer 出现奇怪的错误

android - 在 Android 中使覆盖图像在触摸时透明?

java - Cordova运行不构建插件类

windows-phone-7 - PhoneGap 应用程序中的 Windows Phone 屏幕高度不是 100%