2017-05-11 2 views
0

Essayer de détecter le numéro sortant ou entrant sur (Lollipop 5.1.1) OnePlus deux atomes d'oxygène osdétecter le numéro sortant/entrant Android 5.1.1 lollipop programme

essayé plusieurs façons avec googler mais ne peux pas le succès

String number = intent.getStringExtra("android.intent.extra.PHONE_NUMBER"); 
String number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 
String number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 

permission manifeste

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

utilisant le code ci-dessous pour obtenir le numéro entrant ou sortant

public class callRecorderReceiver extends BroadcastReceiver { 
    private static String TAG = "CallRecorderReceiver"; 
    private Context mContext = null; 
    static long start_time, end_time; 
    String callType = ""; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     this.mContext = context; 
     String action = intent.getAction(); 
     String extraState = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 

     Log.d(TAG, "Action:" + action); 
     Log.d(TAG, "ExtraState:" + extraState); 

     String number = intent.getStringExtra("android.intent.extra.PHONE_NUMBER"); 
      if (number == null || number.equalsIgnoreCase("")) { 
       number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 
      } 

     if (extraState.equalsIgnoreCase("OFFHOOK")) { 

      if (number != null && !number.equalsIgnoreCase("")) { 
       number = number; 
       temp_data.current_number = "" + number; 
      } 

     } else if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) { 

      if (number != null && !number.equalsIgnoreCase("")) { 
       callType = "outgoing"; 
       if (!((number.contains("*") && number.contains("#"))))) { 
        Log.d("outgoing CallTo:", number); 

       } 
          } 
     } else if (action.equals("android.intent.action.PHONE_STATE")) { 
      try { 
       String incomingNumber = intent.getStringExtra("incoming_number"); 

       if (intent.getStringExtra("state").equals(TelephonyManager.EXTRA_STATE_RINGING)) { 

        Log.d("ringing ", "incomingNumber " + incomingNumber); 
       } else if (intent.getStringExtra("state").equals(TelephonyManager.EXTRA_STATE_IDLE)) { 

        Log.d("idle ", incomingNumber); 
       } else if (intent.getStringExtra("state").equals(TelephonyManager.EXTRA_STATE_OFFHOOK)))) { 
        Log.d("State:", "current_state:" + temp_data.current_state); 

       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 
    } 


} 

Répondre

0
+0

Merci, mais ne fonctionne pas dans le récepteur de diffusion – CrazyMind

+0

http://bitgriff.blogspot.in/2013/01/detecting-incoming-and-outgoing-phone.html – CrazyMind

+0

vous ne pouvez le gérer que par le récepteur de diffusion. personne d'autre méthode pour le faire. ça aide dans mon cas. essayer de faire selon les exigences, il peut certainement être fait –

0

donc la raison est la méthode OnReceive() invoquait pas, vérifiez d'abord la version de l'appareil si l'appareil est supérieur à Lolipop, s'il vous plaît aller aux paramètres> applications> application de travail en cours> donner la permission pour le téléphone alors cela fonctionnera pour vous.