I need to make sure the SIM card can be used without entering pin in designated device(s), but it must be required in other devices. (Devices in use are rooted, application is installed as system app)
What I want is to identify a SIM card, and enter the pin programmatically, if one is already known/saved.
I am able to enter the known pin code, when one is required, but I have a problem with SIM identification.
I found out that I am not able to get SIM serial number or subscriber id before the correct PIN is entered.
The method I am using (with permissions and etc.):
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.getSimSerialNumber();
The thing is, this method returns null, if pin is required and not yet entered.
My question is if there is some kind of workaround for this.
Is it possible at all?
Is there another approach?
Ideas and approaches appreciated.
Thanks in advance.
TelephonyManager tm = (TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
}
String simID = tm.getSimSerialNumber();
String telNumber = tm.getLine1Number();
String IMEI = tm.getDeviceId();
Permission:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Your issue:
The phone number returned is whatever is stored on the SIM card's MSISDN, which is not filled by some operators. Try Airtel, Vodafone if in India.
Related
I want to verify that user cell number is same as the sim number used in the device during registration in android application.
How do I get the sim number in my app to compare with the user entered number?
If it is impossible then any other verification process?
This code can find the sim number but only if the number is saved our phone
directory or we can never find the sim number in any case.
TelephonyManager telephonyManager = (TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
mobile number = telephonyManager.getLine1Number();
Really it is impossible only those device which has saved their sim number
can possible. OTP verification process is best for this , please enter your
number and get a otp to verify.
Try following code to get sim serial number and get sim number
TelephonyManager tManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String getSimSerialNumber = tManager.getSimSerialNumber();
String getSimNumber = tManager.getLine1Number();
Log.v(TAG, "getSimSerialNumber : " + getSimSerialNumber +" ,getSimNumber : "+ getSimNumber);
Add below permission into your Androidmanifest.xml
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
You can find the first sim number using this code.
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
mobileNumber = telephonyManager.getLine1Number();
Add this uses-permission also in manifest.
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
This code will help you but some time it does not return the exact result. Best option is to verify the number after asking the user for their mobile number.
This would help you, it has helped me.
I used this code for fetching the number, But it gave me null
TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
It may not always return mobile number.
Let me explain how this actually works: When you buy a new SIM card for a new number, the provider had already (though not always) put a mobile number in the SIM (SIM Cards do have a little memory). Now TelephonyManager API tries to read that number. If it is available then it returns the number.
Now, you can get a SIM without a mobile number associated with it. Example - new SIM for porting (where you use previous number in new SIM Card). Those SIMs don't have any number stored on them, and hence TelephonyManager returns null.
Now, even if TelephonyManager returns a number, you should not trust it to be right. Because many devices provide option to edit that number.
To use getLine1Number() you need either READ_PHONE_STATE OR READ_SMS permission. You may be missing that.
And remember that it returns null if phone number string is unavailable.
I used the following code to get to get the sim number and serial number of the sim. But i am getting the sim serial number but not the sim number. I gave the uses permission all the stuffs like that. but i am not getting it.!! Please help me out.!! Thank You.!
TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String getSimSerialNumber = telemamanger.getSimSerialNumber();
String getSimNumber = telemamanger.getLine1Number();
SIM number is not compulsory to be there, it's upto the Telecom if they put number inside the SIM card. It's mostly happen they do it for POSTPAID SIM cards, mostly SIMs do not have number so in that case they return null and if it has, it shall return that NUMBER as it is. To make sure your SIM has number or not, do check that in your android mobile settings.
check this link Check SIM number in android
I am working in my application and fetching phone number using the method:
TelephonyManager phoneManager = (TelephonyManager)appContext.getSystemService(Context.TELEPHONY_SERVICE);
number = phoneManager.getLine1Number();
It is working well and good with all the SIM card, but getting problem in Airtel provider SIM card.
I am getting blank while trying with this SIM card.
I don't know why Android API is dealing differently with different providers. Please suggest me.
It is because the MSISDN number is not filled on the SIM card by the operator. unfortunately nothing you can do about that.
Thread with some insight on it here
You have to use Telephony Manager;If at all you not found the contact no. of user; You can get Sim Serial Number of Sim Card and Imei No. of Android Device by using the same Telephony Manager Class...
Add permission:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Import:
import android.telephony.TelephonyManager;
Use the below code:
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
// get IMEI
imei = tm.getDeviceId();
// get SimSerialNumber
simSerialNumber = tm.getSimSerialNumber();
I want to retrieve the own mobile number and the IMEI.
How do I get this information from the Android phone?
use
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
// get IMEI
String imei = tm.getDeviceId();
String phone = tm.getLine1Number();
but its not always reliable on for example non phone device.
and you should also add this following permission to your AndroidManifest.xml file
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
getLine1Number();
this method returns the phone number string for line 1,
i.e the MSISDN for a GSM phone. Return null if it is unavailable.
but what about CDMA phone?
Note : this method works only for few cell phone not for all devices
.