2012-09-05 3 views
1

Ceci est le code suivant pour récupérer le numéro de téléphone wwas capable de l'obtenir sur Samsung 4.0.4, mais obtenir en dessous de l'erreur sur htc un v mobile..une idée?Récupérer le numéro de téléphone dans android

public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

TextView textDeviceID = (TextView)findViewById(R.id.deviceid); 


TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 

textDeviceID.setText(getMy10DigitPhoneNumber(telephonyManager)); 


} 
private String getMyPhoneNumber(){ 
TelephonyManager mTelephonyMgr; 
mTelephonyMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
return mTelephonyMgr.getLine1Number(); 
} 

private String getMy10DigitPhoneNumber(TelephonyManager telephonyManager){ 
String s = getMyPhoneNumber(); 
return s.substring(0); 
} 
} 
+1

S'il vous plaît modifier votre message et inclure le message d'erreur. –

+1

Il n'existe aucun moyen fiable d'obtenir le numéro de téléphone. 'getLine1Number()' repose sur le numéro de téléphone stocké sur la carte SIM. Certains opérateurs le font et d'autres non. En outre, si l'utilisateur change son numéro de téléphone, le numéro de téléphone que vous obtenez de la carte SIM en utilisant 'getLine1Number()' sera erroné. Il y a des dizaines de messages comme celui-ci sur StackOverflow. Par exemple voir http://stackoverflow.com/questions/5134398/telephonymanager-getline1number-failing/10255465#10255465 –

+0

Merci david..mais au moins je devrais retourner null droit mais iam obtenir des messages d'erreur dans logcat – hari86

Répondre

0
TelephonyManager mTelephonyMgr; 
mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
String mblNumber = mTelephonyMgr.getLine1Number(); 

Note: Ne pas oublier d'ajouter l'autorisation de READ_PHONE_STATE à ajouter dans le fichier AndroidManifest.xml:

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> 
0

Selon la documentation .getLine1Number() « Renvoie la chaîne de numéro de téléphone pour la ligne 1, par exemple, le MSISDN pour un téléphone GSM. Retour null si elle est disponible. »

Apparemment .getLine1Number() lit ce informations de la carte SIM, donc si l'opérateur a défini le champ MSISDN, il vous renverra sa valeur et null s'il n'a pas défini ce champ.

Dans votre cas, il est probable que votre carte SIM n'ait pas ce champ rempli par l'opérateur.

+0

@ sayyam-y at-il façon de trouver le numéro MSISDN si son ensemble ou non? .. et son ne pas retourner null .. donner des erreurs ... – hari86

+0

pouvez-vous s'il vous plaît poster le message d'erreur? – Sayyam

+0

ici iam incapable de poster l'erreur log..can je vous mail? – hari86

Questions connexes