1. Gecko0815, 22.07.2011 #1
    Gecko0815

    Gecko0815 Threadstarter Neuer Benutzer

    Hallo!

    Ich habe eine (selbstgeschriebene) Applikation, die bei einem eingehenden Anruf die Telefonnummer mit Daten einer Datenbank (am Gerät) vergleicht und bei Übereinstimmung die Anruferdaten mittels einer Toast-Nachricht über dem Anrufer-Bildschirm anzeigt. Das klappt bei den meisten Geräten (Desire Z, Desire S, Galaxy Tab, ...) auch hervorragend, doch bei zwei neuen HTC-Geräten (Sensation, ChaCha) gibt es Probleme bei der Anzeige, wenn das Gerät gesperrt (also im Standby-Modus) ist. Beim Anruf erscheint nichts, erst nach Auflegen erscheint die Toast-Meldung und geht dann nicht mehr weg. Was mir beim Sensation allerdings aufgefallen ist: Der Anruferbildschirm sieht anders aus, je nachdem ob das sich beim Anruf im Standby-Modus befindet oder gerade verwendet wird.

    Meine Fragen: Sind das zwei unterschiedliche Telefon-Applikationen auf dem Gerät? Wie kann ich das Problem umgehen und die Toast-Nachricht doch noch anzeigen lassen?

    Hier der Code-Ausschnitt aus der Klasse TeleListener, die PhoneStateListener erweitert und der die Anruferdaten anzeigt:

    Code:
    LayoutInflater inflater = getLayoutInflater();
    View layout = inflater.inflate(R.layout.toast_layout, (ViewGroup) findViewById(R.id.toast_layout_root));
    
    TextView text = (TextView) layout.findViewById(R.id.text);
    text.setText(infoText.toString()); // Der Text wird weiter vorne im Code zusammengestellt
                
    Toast toast = new Toast(List.this);
    toast.setDuration(Toast.LENGTH_LONG);
    toast.setView(layout);
    final Toast toast2 = toast; 
                
    Thread t = new Thread() {
         public void run() {
              try {
                   while (true) {
                        if (!phoneIsRinging) {
                             toast2.cancel();
                             break;
                        }
    
                        toast2.show();
                        sleep(1850);
                   }
              } catch (Exception e) {
                   Log.i(TAG, "Error while showing caller identification: " + e.toString());
              }
         }
    };
    t.start();
    
    Ich bedanke mich vielmals für Eure Hilfe und hoffe, ich habe alles ausreichend deutlich beschrieben!
    Mit freundlichen Grüßen,
    Gecko0815
     
  2. DieGoldeneMitte, 22.07.2011 #2
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Toast über Handler starten?