Je voudrais récupérer le numéro de téléphone de l'appel entrant et faire quelque chose avec lui comme le faire dans http://blog.whitepages.com/2009/02/27/caller-id-by-whitepages-a-new- Android-app-that-met-telemarketers-on-alert /
Pourriez-vous s'il vous plaît m'aider parce que je ne trouve aucune information à ce sujet. Où dois-je commencer et comment obtenir le numéro de téléphone?
Ok donc actuellement mon code ressemble à ci-dessous. Lorsque je passe l'appel, CustomBroadcastReceiver l'attrape et le message du journal est imprimé. Je peux récupérer le numéro de téléphone du forfait. Mais! Je n'arrive pas à faire fonctionner CustomPhoneStateListener. Comme vous pouvez le voir, j'ai enregistré mon écouteur customPhoneState sur le récepteur, mais le message du journal n'est jamais imprimé à partir de la classe CustomPhoneStateListener. Qu'est-ce que je manque ici? Ma pensée est-elle correcte?
<receiver Android:name=".CustomBroadcastReceiver">
<intent-filter>
<action Android:name="Android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
</application>
<uses-sdk Android:minSdkVersion="5" />
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.WRITE_CONTACTS" />
<uses-permission Android:name="Android.permission.READ_PHONE_STATE" />
public class CustomPhoneStateListener extends PhoneStateListener {
private static final String TAG = "CustomPhoneStateListener";
public void onCallStateChange(int state, String incomingNumber){
Log.v(TAG, "WE ARE INSIDE!!!!!!!!!!!");
Log.v(TAG, incomingNumber);
switch(state){
case TelephonyManager.CALL_STATE_RINGING:
Log.d(TAG, "RINGING");
break;
}
}
public class CustomBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "CustomBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.v(TAG, "WE ARE INSIDE!!!!!!!!!!!");
TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
CustomPhoneStateListener customPhoneListener = new CustomPhoneStateListener();
telephony.listen(customPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
Bundle bundle = intent.getExtras();
String phoneNr= bundle.getString("incoming_number");
Log.v(TAG, "phoneNr: "+phoneNr);
}
Utilisez PhoneStateListener
. Il a un gestionnaire onCallStateChanged
; l'un des arguments fournis que vous obtiendrez est un String
contenant le numéro de téléphone entrant.
Votre méthode remplacée dans CustomPhoneStateListener
doit être appelée onCallStateChanged()
(et non onCallStateChange()
).
Cela aurait été repéré par le compilateur Java si vous aviez eu l'annotation @Override
, Comme vous l'avez pour onReceive()
.