2017-03-28 1 views
0

Je développe une application Android. En ce que j'ai besoin d'obtenir le numéro de téléphone mobile de l'utilisateur à des fins d'appel automatiquement. Mais je suis confronté au problème de l'obtention du numéro de portable de l'utilisateur. J'ai essayé ceci.Comment obtenir le numéro de GSM (GSM) en android

  TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
    String getSimSerialNumber = telemamanger.getSimSerialNumber(); 

    String deviceID = telemamanger.getDeviceId(); 
    String getSimNumber = telemamanger.getLine1Number(); 

et ce

  TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); 

    String network; 
    ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); 
    if(cm.getActiveNetworkInfo().getTypeName().equals("MOBILE")) 
     network = "cellnetwork/4G"; 
    else if(cm.getActiveNetworkInfo().getTypeName().equals("WIFI")) 
     network = "wifi"; 
    else 
     network ="na"; 

    String uphone = tm.getLine1Number(); 
    Toast.makeText(getApplicationContext(),uphone+" "+network,Toast.LENGTH_LONG).show(); 

Dans ceux-ci, je reçois toutes les informations que je veux à l'exception du numéro de téléphone mobile. Existe-t-il une autre méthode pour obtenir un numéro de téléphone portable comme dans l'application BHIM. Dans l'application BHIM, ils obtiennent automatiquement les numéros de téléphone mobile (qu'il s'agisse d'un SIM simple ou double).

Répondre

0

Bien sûr!

Voici quelques informations que vous pouvez obtenir sur SubscriptionManager et SubscriptionInfo.

Bien que je ne sois pas vraiment sûr des autorisations dont vous avez besoin pour faire cela sur une application tierce. Voici comment je fais sur le cadre de mon entreprise:

private void fillSimNumber(TelephonyManager tm, SubscriptionInfo subscriptionInfo) { 
    final String rawNumber = tm.getLine1Number(subscriptionInfo.getSubscriptionId()); 

    if (!TextUtils.isEmpty(rawNumber)) { 
     mSimNumber.setText(rawNumber); 
    } 
} 

Meilleur de la chance!

+0

Je reçois cette erreur. Erreur: (79, 37) error: la méthode getLine1Number de la classe TelephonyManager ne peut pas être appliquée à des types donnés; requis: aucun argument trouvé: int raison: les listes d'arguments réelles et formelles diffèrent en longueur –

+0

Veuillez considérer TOUJOURS lire la documentation avant d'utiliser une méthode. https://developer.android.com/reference/android/telephony/TelephonyManager.html#getLine1Number() –

+0

getLine1Number() avec un type donné est une API hiden sur un framework android. Donc, vous ne serez pas en mesure de l'utiliser autrement que d'être une application système. –