Frage

würde Ich mag den eingehenden Anruf der Telefonnummer abzurufen und mit ihm wie die do etwas zu tun in http://blog.whitepages.com/2009/02/27/caller-id-by-whitepages-a-new-android-app-that-puts-telemarketers-on-alert/

Könnten Sie mir bitte helfen, weil ich keine Informationen darüber finden kann. Wo soll ich anfangen und wie bekomme ich halten, die Telefonnummer?


Ok, so zur Zeit mein Code sieht aus wie unten. Als ich den Anruf fängt die CustomBroadcastReceiver es und die Protokollmeldung wird ausgedruckt. Ich kann die Telefonnummer aus dem Bündel abrufen. Aber! Ich kann nicht hte CustomPhoneStateListener an die Arbeit. Wie man sehen kann ich meine customPhoneState Zuhörer an den Empfänger registriert, aber die Log-Nachricht von der CustomPhoneStateListener Klasse nie bekommen die ausgedruckt. Was bin ich hier fehlt? Ist mein Denken richtig?


<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);

}
War es hilfreich?

Lösung

Verwenden Sie PhoneStateListener . Es hat eine onCallStateChanged Handler; eines der mitgelieferten Argumente, die Sie ist ein String Nummer enthält die ankommende Telefon erhalten.

Andere Tipps

Ihre überschriebene Methode in CustomPhoneStateListener sollte onCallStateChanged() aufgerufen werden (und onCallStateChange() nicht).

Dies würde durch die Java-Compiler wurde gesichtet, wenn Sie die @Override Anmerkung hätten, wie Sie für onReceive() haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top