安卓手机号码验证

6
我需要一种验证在我的Android应用程序中设置的移动电话号码是否正确的方法,即“所有权”,而不是移动电话号码的数据验证。
例如,WhatsApp的做法...
我知道可以通过使用代码进行短信验证来完成这项工作。问题在于它是一个免费的Android应用程序,当应用程序是免费的时候,我不太愿意为每个发送的短信付费。这是一个糟糕的商业模式...
有没有一种安全且免费的方法来完成这件事?
看起来使用API代码并不是很安全,所以我不敢选择这个选项:
TelephonyManager tMgr  (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
mPhoneNumber = tMgr.getLine1Number();

你说的“不安全”是什么意思? - Tushar
我不知道WhatsApp是如何做到的,也许这里的其他人也不知道。也许你可以给我们一些提示? - Robert Harvey
1
根据我的经验,WhatsApp在账户创建时确实会发送短信验证。 - kabuko
WhatsApp从操作系统中获取您的号码,向该号码发送一条短信,并拦截该短信。 - Tushar
@Tushar “不安全”可能是这里用词错误(英语不是我的母语)。我真正意思是“稳定”或“可靠”,因为它经常会返回'null'而不是电话号码。 - andreas78
显示剩余2条评论
1个回答

21

WhatsApp不会向您发送任何短信,它会使用您自己的手机向您自己的号码发送短信。如果收到了短信,则一切正常;如果未收到短信,则说明您不拥有该号码。这是检查用户是否使用其真实号码注册的唯一便捷且廉价的方法。


这意味着用户需要为单条短信付费?这种解决方案有什么已知的缺点吗? - andreas78
是的,这是正确的。我不知道这种解决方案有什么缺点。 - ObAt
唯一的问题是,当您的手机没有任何余额时,您将无法发送任何短信。如果您使用在线免费短信发送程序发送验证短信,则可以绕过安全性检查。 - ObAt
@andreas78 实际上这可能意味着用户在某些网络上需要支付两条短信的费用。美国运营商通常也会收取接收短信的费用。 - Nemanja Kovacevic
如果WhatsApp确实这样做,那么这是不道德的,因为他们没有告知用户是否向自己发送消息并且会产生费用。真是惊奇。 - Sachiin Gupta
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接