Unbekannte Nummern abweisen

  • Antworten:57
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 1

17.06.2009 15:30:02 via Website

Hi Androids,

ich suche eine Möglichkeit in meinem G1 irgendwie unbekannte Anrufe zu blocken und direkt an die Mailbox weiterzuleiten..

Kennt jemand so eine App oder hat schon jemand die Einstellung gesehen?

Ich nutze derzeit Rogers (Haykuros) Rom.. aber die Option habe ich auch vorher nie wahrgenommen.. gibt es da eine Möglichkeit?

Danke schonmal für die Hilfe,

Grüße Daniel

Antworten
  • Forum-Beiträge: 1.614

17.06.2009 18:52:16 via Website

Hi Daniel und Willkommen hier bei uns :)

was meinst du denn mit unbekannten Nummern? Meinst du damit die Anrufe, bei denen die Rufnr. nicht angezeigt wird oder welche die dir unbekannt sind?

Grüße

Anton

Neu bei Android, AndroidPIT oder dem App Center? Hier erfährst Du alles Wichtige: http://bit.ly/ccFQvI

Antworten
  • Forum-Beiträge: 20

20.06.2009 15:39:05 via Website

Hallo zusammen,

genau so ein Programm suche ich auch gerade.

Es soll in erster Linie Anrufe mit unterdrückter Nummer blockieren. Zusätzlich sollte es die möglichkeit haben, einzelne Rufnummer eingegeben zu können die dann auch blockiert werden, ohne das sie ins eigentliche Telefonbuch eingetragen werden.

Am liebsten wäre mir wenn der Anrufer sofort ein Besetztzeichen hört. Das man nur kurz sieht das ein unbekannter anruft und dann sofort wieder das bild was vor dem anruf zu sehen war. Dies ist aber nicht zwingend notwendig.

Habe viel gesucht aber leider nichts entsprechendes für Android gefunden für jedes andere Handy OS gibt es genug.

Wer kann mir weiterhelfen? Danke schon mal im vorraus.

Tim

Antworten
  • Forum-Beiträge: 20

24.06.2009 13:17:31 via Website

Hallo noch mal zusammen,

ich verzweifle langsam. Ich finde einfach kein passendes programm bzw überhaupt keins was in die Richtung geht, anrufe mit unterdrückter Nummer abzuweisen. Das Problem ist, ich hab da zur Zeit nen Stalker und das nervt ungemein, wenn es klingelt man geht dran und es wird direkt wieder aufgelegt.

Kennt nicht einer ne Lösung?

Tim

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

24.06.2009 15:36:28 via Website

Moin zusammen,
Wird nicht funktionieren solange Google nicht den seit dem 20. Jan 2008 / Kurz vor erscheinen des SDK 1.0
gemeldeten Bug bereinigen wird.

Bug Nr. 54

Da kannst nachlesen, dass das nicht geht.

Schlicht ist der Zugriff auf die Phone.class nicht zugelassen.

Du kannst Dir zwar den incoming Call anzeigen lassen lesend, hast aber keinerlei Zugriff auf die Funktionen welche dir ein Auflegen erlauben würden.

1Phone phone = telephonyManager.getPhone();
2
3 phone.endCall();

Das funktioniert also so nicht weil es einen Code Error hagelt: Phone cannot be resolved to a type

Deswegen gibts auch keine Programme die das machen.

Ich vermute Google will das zur Zeit einfach nicht, dass die Leute auf das Zugriff haben. Vieleicht wurde Google da auch von den Telefonieprovidern erpresst ..?? ;) ;)

lg
Voss

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

24.06.2009 15:38:28 via Website

Eine Nummer vor dem Aufpoppen des PhoneCallManagers anzeigen zu lassen ist relativ easy ...
1package com.example.HelloWebView;
2
3import android.app.Activity;
4import android.content.Context;
5import android.os.Bundle;
6import android.telephony.PhoneStateListener;
7import android.telephony.TelephonyManager;
8import android.webkit.WebView;
9import android.widget.Toast;
10
11public class HelloWebView extends Activity { WebView webview;
12 /** Called when the activity is first created. */
13 @Override
14 public void onCreate(Bundle savedInstanceState) {
15 super.onCreate(savedInstanceState);
16 setContentView(R.layout.main);
17 String srvcName = Context.TELEPHONY_SERVICE;
18
19
20
21 TelephonyManager telephonyManager = (TelephonyManager)getSystemService(srvcName);
22
23
24 PhoneStateListener callStateListener = new PhoneStateListener() {
25
26 public void onCallStateChanged(int state, String incomingNumber) {
27 //TODO react on incoming call
28 Toast.makeText(getApplicationContext(), incomingNumber, Toast.LENGTH_LONG).show();
29 }
30 };
31
32
33 telephonyManager.listen(callStateListener,PhoneStateListener.LISTEN_CALL_STATE);
34
35
36
37
38
39
40 // finish();
41 }
42
43 PhoneStateListener phoneStateListener = new PhoneStateListener() {
44 public void onCallStateChanged(int state, String incomingNumber ){}
45 };
46
47}


Mehr geht aber nicht wie eben schon erklärt.

P.S. ja, ich weiss das hier kein finish() eingebaut ist .. darf auch nicht sonst funktionierts ja nicht. Ich
war schlicht zu faul, einen kompletten BG Thread oder service zu schreiben ;)

lg
Voss

— geändert am 24.06.2009 15:39:45

lg Voss

Antworten
  • Forum-Beiträge: 1.588

24.06.2009 17:49:11 via Website

einen tip @die entwickler.....wenn man den anrufe nicht abweißen kann...könnt ihr aber sicherlich einach vibration und stummschlatung für unbekannt anrufe aktivieren oder?

ich meine so wird zumindst das problem gemildert...

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

24.06.2009 21:18:03 via Website

Hallo zusammen,

wenn ich mich nicht sehr täusche dann hab ich jetzt vielleicht eine Lösung gefunden.

Zumindest im Emulator funktioniert das theoretisch relativ einwandfrei. Wenn ich eine bekannte
Nummer herausfiltere, also quasi den Call zunächst einmal abfange über einen CallstateListener
dann gelingt es mir den Anruf abzuweisen, ohne das es auch nur zu einem Klingeln kommt.

Der Anruf wird dann als entgangener Anruf aufgeführt und das Telefon lächelt mich an als wäre
nichts gewesen. ;)

Soweit so gut. Ich muss das ganze nur noch auf eine valide Architektur stellen und herausbekommen,
wie ein Anruf mit unterdrückter Nummer zu erkennen ist. Respektive, was bei einem Anruf mit unterdrückter
Nummer als incoming Number vom Gerät mitgeliefert wird.

Wenn das gelingt .. .dann stell ich die Applikation hier mal kurz vor und werd sie dann am Market platzieren. ;)
Scheinbar hat Google da ein Hintertürchen offengelassen ... *lach*

Schau ma mal ....

lg
Voss

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

24.06.2009 23:13:55 via Website

Sowas doofes,

jetzt such ich bei Google nach Informationen zum incoming call und finde an platz 1 mein eigenes Posting hier bei AndroidPit ... *fluch* und *freu*

lg
Voss

lg Voss

Antworten
  • Forum-Beiträge: 1.614

24.06.2009 23:21:19 via Website

Jörg Voss
Sowas doofes,

jetzt such ich bei Google nach Informationen zum incoming call und finde an platz 1 mein eigenes Posting hier bei AndroidPit ... *fluch* und *freu*

lg
Voss

Das ist echt zum lachen. Und hat dir das Suchergebniss geholfen? *:grin:

Ein hoch auf die schnelle Indexierung und die gute Optimierung von androidpit.de auf Suchmaschinen!

Neu bei Android, AndroidPIT oder dem App Center? Hier erfährst Du alles Wichtige: http://bit.ly/ccFQvI

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

25.06.2009 12:07:24 via Website

Moin zusammen,

also .. es gibt eine gute und eine schlechte Nachricht zum Thema unbekannte Anrufer zu blocken.
Wobei blocken ein blöder Ausdruck ist, das Handy kann einen Anrufer nicht blockieren. Das geht nur
auf Providerebene.

Die gute Nachricht zuerst.
Es ist möglich einen Anrufer der seine CallerID nicht mitsendet zu identifizieren.
Im Fall von T-Mobile Austria ist es so, dass die CallerID, also die incomingNumber die uns als String von der Telefonhardware geliefert wird schlicht leer ist. Andere Anbieter machen das teilweise durchaus anders.
(Bsp. in Canada)

Soweit so gut. Damit sind wir also in der Lage auf einen "unbekannten Anrufer" nennen wir ihn mal "John Doe"
zu reagieren. Wie schon berichtet, lässt uns die momentane Implementierung des Android OS nicht auf die darunterliegende PhoneHardware zugreifen. Es gibt im System theoretisch die Möglichkeit einen Call programmatisch zu beenden, jedoch nicht für uns. Was also tun ... Wir wollen ja den Call immer noch nicht annehmen.

Ok, voraussetzung um zu telefonieren ist eine Verbindung zum Provider. Keine Verbindung keine Calls. Jeder kennt das aus der U-Bahn. Kaum im Tunnel reißt das Gespräch ab. Ohne Rücksicht darauf in welchem Call-State man sich gerade befindet.

Also schaffen wir eine Art Tunnel-Effekt. Wir entziehen dem Handy einfach die Netzverbindung.
Das schaffen wir über den Weg den "AIRPLANE_MODE" zu aktivieren. Das Handy kappt augenblicklich
alle Verbindungen und der Call ist abgewiesen.

Nachdem unser John DOE nun also nicht mehr klingelt ... und vermutlich in der BOX landet oder auch nicht, wurde die Aufgabe erfüllt. Anrufer abgewiesen.

Zu der schlechten Nachricht:
Das unangenehme an der Geschichte ist, ich muss hinterher nachdem im Programm der AIRPLANE_MODE wieder deaktiviert wurde, den Pin erneut eingeben. :rolleyes:
Klar das abweisen funktioniert, aber sollte der Fall eintreten, dass ich gerade mal nicht im Zimmer bin, bekomme ich vielleicht gar nicht mit, dass ich jetzt nicht erreichbar bin. Wen das nicht stört .. bitte ..

Was also wollen wir tun? Das Handy für diesen Anruf einfach nur stumm schalten? Vibration und/oder Ton auch abdrehen? Und dann hinterher wieder auf Laut schalten?

Sorry das die Lösung nun nicht so ganz fulminant ist wie zuerst angenommen. Ich hab das alles am Emulator ausprobiert und die Krux ist, der verlangt den Pin natürlich nicht ;) Erst als ich die App am Handy ausprobierte, merkte ich dann, dass man ja den PIN eingeben muss bei der Rückkehr aus dem AIRPLANE_MODE.

Also was meint Ihr?

lg
Voss

lg Voss

Antworten
  • Forum-Beiträge: 1.588

25.06.2009 12:45:36 via Website

ich weiß ja nciht aber als was für ein datentyp wird die anrufer numemr angezeigt?

ich würd falls es ein integer ist halt sagen wir
IF (anrufer<1){//stummschalten
}
ELSE IF(stummgeschalten==true){
//stummschaltung verwerfen
}

sonst halt evt. noch type casting....

aber wie gesagt ich kenne die adnroid sprache nciht wirklich...kp ob das geht

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

25.06.2009 13:02:59 via Website

Wie ich schon schrieb Marius,

die CallerID wird uns als String geliefert.

Das ist auch überhaupt kein Problem. Die Erkennung des Anrufes mit unbekannter Nummer sieht wie folgt aus und passiert im CallState Listener:

1public void onCallStateChanged(int state, String incomingNumber) {
2
3 //Debug Ausgaben
4 Toast.makeText(getApplicationContext(), "Callstate: "
5 + state, Toast.LENGTH_LONG).show();
6 Toast.makeText(getApplicationContext(), "Nummer: "
7 + incomingNumber,
8 Toast.LENGTH_LONG).show();
9 Toast.makeText(getApplicationContext(), "Länge Nr: "+
10 incomingNumber.length(), Toast.LENGTH_LONG).show();
11
12 // Hier wird die Nummer erkannt , State 1 = ringing
13
14 if (incomingNumber.equals("") && state == 1) {
15 // Keine Anrufer ID und State = RINGING also kick him off the "unknownCaller"
16
17 test = true;
18 Toast.makeText(getApplicationContext(), "Nummer leer: " +
19 incomingNumber,Toast.LENGTH_LONG).show();
20 }
21
22 // Hier gelangt das Programm hin wenn der Phonestate von ringing auf idle wechselt
23 // state = 0 - IDLE
24 if (state == 0 && test) {
25 // Hier muss das was vorher disabled wurde dann wieder enabled werden
26
27 test = false;
28
29 }
30
31 }
32 };


Frage beantwortet ?

lg
Voss

— geändert am 25.06.2009 13:21:26

lg Voss

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

25.06.2009 13:19:20 via Website

Nicht wirklich irreführend Marius.

Ich hab doch danach gefragt WAS wir tun wollen und nicht WIE wir es tun wollen :grin::grin::grin::grin:

lg
Voss

lg Voss

Antworten
  • Forum-Beiträge: 20

25.06.2009 16:22:45 via Website

Hallo zusammen,

erstmal großen Resepkt an euch. Hätte nicht gedacht, dass sich das ganze als so problematisch erweist. Aber das interesse an dem Programm liegt ja nicht nur auf meiner Seite.

Umschalten auf den Airplane-Modus wäre natürlich am schönsten weil der Anruf nicht mehr auf dem Display zu sehen wäre. Aber danach den PIN jedesmal neu einzugeben, ist leider , wie schon geschrieben, im Alltag nicht vorteilhaft. Dadurch würden einem mehr erwünschte Anrufe endgehen als unerwünschte.

Dementsprechend wäre die Funktion, dass sich das Handy sich auf lautlos schaltet, für den Moment des Anrufes, auf jedenfall die Alltagstaugliche. Also wäre diese Aktion eindeutig zu bevorzugen.


MfG
Tim

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

25.06.2009 18:35:01 via Website

So ... ich hab das jetzt einfach mal realisiert mit dem Lautlos schalten bei Anruf mit unbekannter Nummer.

Nicht das die Applikation fertig wäre, aber man kann es zumindest ausprobieren, dass es funktioniert.

Hier ist mal ein Download Link wo Ihr die NICHT - signierte Applikation zum Testen herunterladen könnt.


KillJohnDoe.apk

Nicht signiert heißt in diesem Fall, das Ihr das Handy so einstellen müsst, dass unbekannte Applikationen installiert werden dürfen.

Das Tool aufgerufen präsentiert sich mit einem schlichten Screen, sagt einem kurz : Wir geben Stalkern keine Chance und wartet dann auf Anrufe. Klickt man auf den HomeButton liegt die App im Hintergrund und wartet dort auf den ersten Stalker .. ;)

Ruft man nun die Nummer dieses Handys mit unterdrückter AnruferID (CallerID, oder auch CLID genannt) an, passiert folgendes, Es wird erkannt, dass keine Nummer mitgeliefert wird, dass der Callstate von Idle auf RINGING gewechselt hat und nun wird Ton auf NULL gesetzt sowie Vibration ausgeschaltet.

Legt der Anrufer auf, oder er landet in der Box, wechselt der Callstate wieder von RINGING auf IDLE was ebenso erkannt wird und der Ton wird wieder eingeschaltet und Vibration ebenso.
Jetzt wird die Applikation terminiert und beendet sich

In beiden Fällen TON AUS und TON EIN sowie Exit wird man über dieses per TOAST - MESSAGE informiert.

So .. jetzt bin ich mal auf Eure Testergebnisse und Meinungen gespannt.

lg
Voss

lg Voss

Antworten
Gelöschter Account
  • Admin
  • Forum-Beiträge: 3.718

26.06.2009 20:34:59 via Website

Hallo Jörg,
habe dein Tool gerade mal runtergeladen und probiert.
Aber ich glaube die Sache hat noch einen kleinen Haken....
Ich starte das Tool ganz normal - wie von dir beschrieben - Wenn ich nun auf Home drücke laüft dein Tool im
Hintergrund Soweit so gut.
Nun habe ich mich mit einem anderem Handy mit unterdrückter ID angerufen - mein G1 leuchtet auf bleibt aber stumm - wie geplant.
Aber das G1 bleibt danach auf lautlos (Lautsprecher durchgestrichen in der Statusleiste)
Ich muß nun meinen Klingelton manuel wieder einschalten und finde ich nicht ganz gut.
Wenn der Bug noch beseitigt ist, wäre es aber ein wundervolles Apps.

Wenn du deine Apps noch verbessern willst - wäre vielleicht auch noch interessant wenn man 2- 3 TelNr
selbst blocken könnte - aber ich weiß nicht ob das überhaupt machbar ist.
Schöne Grüße Manfred und Danke

— geändert am 26.06.2009 20:42:27

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

26.06.2009 23:02:46 via Website

Das ist schon interessant Manfred, vorab mal danke fürs testen!!!

Genau das von Dir beschriebene Verhalten hat sich bei mir nicht gezeigt.
Sollte sich auch nicht zeigen.
Der logische Ablauf ist wie folgt:
Das Handy bekommt einen Anruf und der onCallStateChanged-Listener bekommt einen
Wechsel des CallStates von IDLE auf RINGING mit.
Jetzt spricht der Listener an und prüft zunächst auf incomingCall.equals("") && CALL_STATE==1
mit anderen Worten, ist die Nummer leer und ist CALL_STATE = RINGING.
Jetzt wird Stumm geschaltet (Sound und Ton) sowie eine CheckVariable test=true gesetzt.

Legt nun das gegenüber auf oder landet in der Box wechselt der onCallStateChanged wieder von
RINGING auf IDLE und die erste Prüfung schlägt fehl ..
die zweite Prüfung sollte nun zutreffen, da nun STATE = 0 && test=true, mit anderen Worten,
CALL_STATE = IDLE und test ist wahr.
Nun sollte wieder auf laut gestellt und Vibration eingeschaltet werden.

Genau das passiert auch wenn ich es, so wie du beschrieben hast, bei mir am G1 mache.

Du kannst es überprüfen ob das bei Dir auch so funktioniert wenn Du das Display
Deines G1 genau beobachtest. Wenn Stumm geschaltet wird sollte eine kleine
Toast Meldung am Screen erscheinen, die folgendes meldet:
"Gone silent for short"

Wird wieder laut geschaltet, also wenn die zweite Bedingung zutrifft und zündet,
erscheint folgender Toast am Screen:
"Gone back to ringing and terminating"

Danach beendet sich die Applikation. Ohne Deine Aussage anzweifeln zu wollen,
ich hätts nicht reingestellt, wenn das bei mir nicht genau so funktioniert hätte.

Kannst Du mir mal sagen, ob Du beide Meldungen am Screen sehen kannst oder
ob nur die erste Meldung bei Dir erscheint? Hast Du am anrufenden Handy aufgelegt oder
gewartet bis Du auf die Box gekommen bist?

lg
Voss

lg Voss

Antworten