Question

Je voudrais récupérer le numéro de téléphone de l'appel entrant et faire quelque chose comme le do dans http://blog.whitepages.com/2009/02/27/caller-id-by-whitepages-a-new-android-app-that-puts-telemarketers-on-alert/

Pourriez-vous me aider parce que s'il vous plaît, je ne peux trouver aucune information à ce sujet. Où dois-je commencer et comment puis-je mettre la main sur le numéro de téléphone?


Ok, donc actuellement mon code ressemble ci-dessous. Quand je place l'appel, le CustomBroadcastReceiver attrape et le message du journal est imprimé. Je peux récupérer le numéro de téléphone du faisceau. Mais! Je ne peux pas hte CustomPhoneStateListener au travail. Comme vous pouvez le voir, je me suis inscrit mon écouteur customPhoneState au récepteur, mais le message du journal jamais de imprimé de la classe CustomPhoneStateListener. Que dois-je mon manque ici? Ma pensée 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);

}
Était-ce utile?

La solution

Utilisez PhoneStateListener . Il a onCallStateChanged gestionnaire; l'un des arguments fournis, vous obtenez est un String contenant le numéro de téléphone entrant.

Autres conseils

Votre méthode surchargée dans CustomPhoneStateListener doit être appelé onCallStateChanged() (et non onCallStateChange()).

Cela aurait été repéré par le compilateur Java si vous avez eu l'annotation @Override, comme vous avez pour onReceive().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top