Skip to main content

Complete (working) code to verify an Android app user phone number through SMS

Update from Thursday September 14th 2017: 
The very same day I posted this (the day before yesterday), I realized that it looked like Google had just made it effectively obsolete 
 
 
I thought that at least I could claim that I chose a very demanded functionality to blog about, since Google decided to add a new API to provide this very same service.
Even the names are quite similar, I called it "SMS Verifier" and they call it "SMS Retriever".
But after looking into this new Google Services API, I found out that it requires to use a paid third-party service such as Twilio... very disappointing!

So my original post (which follows below) is still relevant after all, since it allows you to verify the user's phone number for free. 

Original post: Tuesday September 12th 2017
It was about time for me to give back to the open source community, so I have just pushed the complete (working) code to verify the user's phone number from within an Android app to Github.

When I googled this functionality (before deciding to write the code myself), I just found few code snippets such as this one, and I also realised that there is a company trying to monetize it through a pay-per-use web API. 

But why would you need to verify the user's phone number?
Well, because I think the phone number is probably the best user identifier you can use for your mobile app. 
I believe it is better than asking the user to create yet another user name (or email account) and password, or allow them to authenticate using Facebook or any other social network (not everybody has a Facebook account but obviously everybody who owns a phone has a SIM card, and  hence, a phone number).

Even the product owner of Skype admitted it to me while in a tech talk at the Microsoft offices in Prague, when I asked how come WhatsApp became much more popular than Skype on mobile devices when the latter had a huge advantage since it already had the biggest share of the interpersonal communication market on PC before smart phones became mainstream.
WhatsApp registration and login was (ans still is) much simpler than Skype's, because it uses the user's phone number as identifier.
How many Skype accounts do you have? Or better, how many Skype accounts have you created? I must have created half a dozen myself, most of the people just create a new account when they forget or lose their password.
But with the phone number is a different story, most of the people just have one phone number at a time.

And why do you need to use SMS?
Because the same way a computer connected to the internet does not know her public IP address, a mobile device does not know his telephone number, only the network operator knows it, so we need to use SMS to verify that the phone number entered by the user is really theirs.

So what does the code do
Well, better than explain it with words, just have look at the following diagram

But better, have a look to the code.
I followed the MVC model, so there are 3 main parent packages.
The model classes do not talk to any outer application classes.
The controller classes just talk to the model classes.  
The view classes just talk to the controller classes.  

The code seems to be working fine, but please note that I just pushed to the Github repository the files which I modified while coding this PoC app, so there are many files (mainly resource files) which are missing in the repo but they are simply the default files which you get when creating a new project using Android Studio.

Comments

  1. Its an incredible joy perusing your post. It's brimming with data I am searching for and I want to post a remark that "The substance of your post is marvelous" Great work.
    android app development courses in chennai

    ReplyDelete

Post a Comment

Popular posts from this blog

Shared Ledger Simulator

I have been interested in the shared/distributed ledger technology (a.k.a. block chain, a.k.a. the magic behind cryptocurrencies) for more than a year already but recently I had finally put real time and effort into it.

And since I believe that the best way to understand something is to get your hands dirty, that is what I have done, after I got a grasp of the core principles (or that is what I thought back then), I decided to code my own shared ledger simulator.

Initially, I also considered to look into the main existing code bases (e.g., the source code of the main/official Bitcoin client/miner or Ethereum's) since they are open source, but seeing code like thisput me off... That file is 3229 lines big!!! Plus it is written in C++.
Do not get me wrong, I truly believe Satoshi Nakamoto (i.e., whoever hides behind that name) is a genius and also a great software developer, but he/she/they for sure did not have readability as their main priority.

I also noticed that some other people h…

You can finally DISLIKE a tweet (and make it count)

(If you don't feel like reading you can watch this video instead)

How many times have you wished there was a "dislike" button in Twitter? (and probably also in any other social network, but I will focus on Twitter in this post).

And I am not referring to this dislike button which is not what you want, since it is just a way to tell Twitter (and no one else) that you would not like to see similar tweets on your feed in the future.

So until Twitter decides to add this highly demanded feature (i.e., a real dislike button), I have come up with a way to dislike a tweet and make it count, so you can share your dislikenesswith everybody and your dislikes can be aggregated with other Twitter users' dislikes.

All you need to do in order to dislike a tweet is to use the hashtag #dislike or just #dlfor short, when replying to the tweet which you dislike. That's it, so simple!

For example, this is the image of a tweet which has two dislikes:

But it would be very annoying if you ha…