Rufen Sie die Telefonnummer eines eingehenden Anrufs in Android ab
Ich möchte zum abrufen der ankommenden Anrufs die Telefonnummer und etwas zu tun mit es wie das 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, denn ich kann nicht finden alle Informationen über dieses.
Wo fange ich an und wie bekomme ich die Telefonnummer?
Ok, so ist derzeit mein code sieht wie folgt aus. Wenn ich den Anruf der CustomBroadcastReceiver fängt ihn auf und die log-Nachricht ausgegeben. Kann ich abrufen der Telefonnummer aus dem bundle. Aber! Ich kann nicht hte CustomPhoneStateListener zu arbeiten. Wie Sie sehen können ich habe mich registriert, meine customPhoneState Zuhörer an den Empfänger, aber die log-Meldung noch nie bekommen ist, ausgedruckt aus dem CustomPhoneStateListener Klasse. Was bin ich, mein fehlen hier?
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);
}
InformationsquelleAutor der Frage jakob | 2009-12-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
PhoneStateListener
. Es hat eineonCallStateChanged
handler; eines der angegebenen Argumente, die Sie erhalten ist eineString
mit der eingehenden Rufnummer.InformationsquelleAutor der Antwort John Feminella
Hier ist eine praktische Anwendung, die können Sie abrufen, Telefon-Nummer, wenn es einen eingehenden Anruf, wie incomingNumber und auch, wenn der Aufruf BEENDET ist - Hinweis: der Handler () - code.
Und dann hinzufügen und initialisieren Sie den Hörer in Ihrer onCreate oder onStartCommand-code:
InformationsquelleAutor der Antwort Nirav Ranpara
Ihre überschriebenen Methode in
CustomPhoneStateListener
genannt werden sollteonCallStateChanged()
(und nichtonCallStateChange()
).Diesem würde wurden entdeckt, die durch den Java-compiler, wenn Sie hätte den
@Override
annotation, wie Sie füronReceive()
.InformationsquelleAutor der Antwort mikeplate