Come ottengo il numero di telefono quando c'è una chiamata in arrivo in Android?Come ottenere il numero di telefono da una chiamata in arrivo?
risposta
Fai un Broadcast receiver
dire ServiceReceiver
assegnare la sua azione in manifesto.
<receiver android:name=".ServiceReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
Aggiungi un PhoneStateListener
al vostro TelephonyManager, PhoneStateListener avendo esclusione onCallStateChanged()
con il parametro numero in entrata. Questo è tutto.
ServiceReceiver.Java
public class ServiceReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(new PhoneStateListener(){
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
System.out.println("incomingNumber : "+incomingNumber);
}
},PhoneStateListener.LISTEN_CALL_STATE);
}
}
richiede l'autorizzazione?> –
aggiunto questo nel manifest e ha funzionato
Si prega di fare riferimento a questa domanda: Retrieve incoming call's phone number in Android
E hanno anche uno sguardo a questa risposta anche: how do I get the phone number from incoming call?
è possibile trovare una soluzione here
Bundle bundle = intent.getExtras();
String phoneNr= bundle.getString("incoming_number");
Questo vi aiuterà con aria di sfida voi.
Ecco un'implementazione che consente di recuperare il numero di telefono se si tratta di una chiamata in arrivo come numero in entrata e anche quando la chiamata è FINITO - prendere nota del codice dell'handler().
private class PhoneCallListener extends PhoneStateListener {
private boolean isPhoneCalling = false;
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (TelephonyManager.CALL_STATE_RINGING == state) {
// phone ringing
Log.i(LOG_TAG, "RINGING, number: " + incomingNumber);
}
if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
// active
Log.i(LOG_TAG, "OFFHOOK");
isPhoneCalling = true;
}
if (TelephonyManager.CALL_STATE_IDLE == state) {
// run when class initial and phone call ended, need detect flag
// from CALL_STATE_OFFHOOK
Log.i(LOG_TAG, "IDLE number");
if (isPhoneCalling) {
Handler handler = new Handler();
//Put in delay because call log is not updated immediately when state changed
// The dialler takes a little bit of time to write to it 500ms seems to be enough
handler.postDelayed(new Runnable() {
@Override
public void run() {
// get start of cursor
Log.i("CallLogDetailsActivity", "Getting Log activity...");
String[] projection = new String[]{Calls.NUMBER};
Cursor cur = getContentResolver().query(Calls.CONTENT_URI, projection, null, null, Calls.DATE +" desc");
cur.moveToFirst();
String lastCallnumber = cur.getString(0);
}
},500);
isPhoneCalling = false;
}
}
}
e quindi aggiungere e inizializzare l'ascoltatore nel codice onCreate o onStartCommand:
PhoneCallListener phoneListener = new PhoneCallListener();
TelephonyManager telephonyManager = (TelephonyManager) this
.getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.listen(phoneListener,
PhoneStateListener.LISTEN_CALL_STATE);
in realtà, il registro delle chiamate non viene aggiornato affatto durante la chiamata. Solo dopo la chiamata è finita –
Utilizzando la risposta accettata, si registra un nuovo ascoltatore ad ogni cambio dello stato di chiamata. Risulterà in più chiamate onCallStateChanged per lo stesso evento.
Sì, sto ricevendo più chiamate. Qual è la soluzione proposta quindi? – Basher51
La seguente soluzione mi ha aiutato a recuperare i numeri di telefono in entrata e in uscita.
cose da includere nella manifesta:
1) Il permesso:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
2) Un ricevitore di broadcast:
<receiver android:name=".AnswerCallBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
cose da includere in classe BroadcastReceiver:
public class AnswerCallBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
if(arg1.getAction().equals("android.intent.action.PHONE_STATE")){
String state = arg1.getStringExtra(TelephonyManager.EXTRA_STATE);
if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){
Log.d(TAG, "Inside Extra state off hook");
String number = arg1.getStringExtra(TelephonyManager.EXTRA_PHONE_NUMBER);
Log.e(TAG, "outgoing number : " + number);
}
else if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)){
Log.e(TAG, "Inside EXTRA_STATE_RINGING");
String number = arg1.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.e(TAG, "incoming number : " + number);
}
else if(state.equals(TelephonyManager.EXTRA_STATE_IDLE)){
Log.d(TAG, "Inside EXTRA_STATE_IDLE");
}
}
}
}
Non dovrebbe essere Intent.EXTRA_PHONE_NUMBER? –
EXTRA_PHONE_NUMBER non può essere risolto o non è un campo – rad
- 1. Ottieni il numero di telefono del chiamante da una chiamata in arrivo su iPhone
- 2. Android: come ottenere il numero di telefono da un SMS in arrivo?
- 3. come ottenere il numero di chiamata in arrivo utilizzando il callkit
- 4. Simulare una chiamata in arrivo da un numero privato
- 5. Rileva chiamata in arrivo iphone 5
- 6. Rispondere automaticamente alla chiamata in arrivo?
- 7. Come ottenere il numero di telefono di Facebook in Android
- 8. come ottenere il numero smsc di un telefono in Android?
- 9. Come ottenere i contatti il numero di telefono in Android
- 10. schermata chiamata in arrivo Android
- 11. Come fa un Android "OS" rilevare una chiamata in arrivo
- 12. Android: come ottenere il numero di telefono del mittente e del destinatario da sms primari
- 13. Come ottenere il numero di serie del telefono (IMEI)
- 14. Come ottenere il numero di telefono di un telefono Android tramite adb?
- 15. Rilevamento di una chiamata in arrivo in Lync
- 16. Come ottenere un numero di telefono in React Native?
- 17. Come ottenere il numero di telefono del destinatario SMS in Android
- 18. come ottenere il valore di ritorno da una chiamata ajax?
- 19. Ottenere il numero di telefono dall'URI di ricerca
- 20. php ottenere il numero da una stringa
- 21. Rifiuta chiamata in arrivo in Android
- 22. È possibile ottenere il numero di telefono tramite Google oAuth2?
- 23. Rimuovere trattino da un numero di telefono
- 24. Come ottenere il numero di righe inserite da una transazione
- 25. Zend_Db: come ottenere il numero di righe da una tabella?
- 26. Come reindirizzare una chiamata da un numero all'altro in Android
- 27. Facebook API - Come ottenere l'indirizzo dell'utente, numero di telefono?
- 28. Come ottenere il corpo del contenuto da una chiamata httpclient?
- 29. Ionic ottiene il numero di telefono dell'utente
- 30. Come mostrare la notifica di chiamata in arrivo nell'applicazione Android
si desidera il numero di telefono dalla cronologia delle chiamate recenti o ottenere quando avviso chiamata in arrivo? – ckpatel
@ChiragPatel dalla chiamata in arrivo –
c'è una domanda simile [qui] [1] un'occhiata [1]: http://stackoverflow.com/questions/1853220/retrieve-incoming-calls- numero di telefono in Android – Antarix