0

Ich habe eine App und es ist wichtig für mich, Zeitänderungen zu erkennen. Bis jetzt habe ich Empfänger mit der richtigen Absicht Filter wie folgt aus:Wie bekomme ich die Zeit ändern Broadcast auch wenn App geschlossen

<receiver 
    android:name=".MyReceiver" 
    android:enabled="true" 
    android:exported="true"> 
    <intent-filter> 
    <action android:name="android.intent.action.TIME_SET" /> 
    <action android:name="android.intent.action.ACTION_TIME_CHANGED" /> 
    <action android:name="android.intent.action.DATE_CHANGED" /> 
    </intent-filter> 
</receiver> 

und dies ist mein Empfänger:

public class MyReceiver extends BroadcastReceiver { 
    public MyReceiver() { 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     SharedPreferences.Editor spe =PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()).edit(); 
     spe.putLong("UFCount", 1)); 
     spe.putLong("FCount", 1)); 
     spe.commit(); 
     Toast.makeText(context.getApplicationContext(), "Your job is being done!!", Toast.LENGTH_LONG).show(); 
    } 
} 

dieser Receiver funktioniert nur, wenn die App geöffnet \ ist in-the-Hintergrund. Wie kann ich diesen Empfänger funktionieren lassen, selbst wenn die App geschlossen ist?

+0

Sie können diesen Link überprüfen [http://Stackoverflow.com/a/16824692/4049612] (http://Stackoverflow.com/a/16824692/4049612) – Krishna

+0

@Krishna ich fühle mich nicht gut über eine Service läuft die ganze Zeit. Ich denke nicht, dass es ein optimaler Weg ist, dies zu tun – hadi

Antwort

0

Da die Anwendung geschlossen ist, gibt es keine Benutzeroberfläche (d. H. Keine Aktivität), um den Toast anzuzeigen. Zu diesem Zeitpunkt sollte in Logcat eine Ausnahme vorliegen. Sie können auch eine Logcat-Ablaufverfolgung hinzufügen, bevor der Toast angezeigt wird, z. B. Log.d("MyReceiver", "in onCreate()");, und Sie sollten sie auch sehen, wenn die App geschlossen wird.

Anstatt einen Toast anzuzeigen, könnten Sie zum Beispiel eine local notification senden, was erlaubt ist, da keine Aktivität von Ihrer App benötigt wird.

+0

Ich habe das Protokoll verwendet, aber es funktioniert nicht. Ich suchte nach dem Protokoll und es wird nicht angezeigt, daher der Empfänger nicht ausgelöst – hadi

+0

Wenn Sie Logcat von Android Studio betrachten, können Sie versuchen, die Logcat-Filter deaktivieren und sehen, was Sie bekommen? AS hat manchmal Probleme, Spuren von geschlossenen Anwendungen zu bekommen. – Lolo

+0

Ja, das habe ich auch gemacht. immer noch nichts auftaucht. Ich frage mich, ob 'android.intent.action.TIME_SET' Aktion die Flagge hat, um geschlossene App-Komponente zu öffnen? – hadi

Verwandte Themen