Warum onReceive wird nicht aufgerufen, erweitern BroadcastReceiver in Android
der onReceive-Methode nicht für einige Grund
Ich habe keine Filter angewendet, oder alles,
Hier ist die Klasse :
import java.util.ArrayList;
import java.util.Calendar;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.Context;
import android.util.Log;
public class RegisterListener extends BroadcastReceiver {
private final int DELAY_TIME = 5;
private int m_seconds = 0;
private int m_minutes = 0;
private int m_hours = 0;
static ArrayList<BroadcastReceiverListener> listeners = new ArrayList<BroadcastReceiverListener>();
@Override
public void onReceive(Context context, Intent intent) {
Log.d("ScreenReceiver Action:",intent.getAction());
Calendar c = Calendar.getInstance();
m_seconds = c.get(Calendar.SECOND);
m_minutes = c.get(Calendar.MINUTE);
m_hours = c.get(Calendar.HOUR);
for (BroadcastReceiverListener listener:listeners){
listener.onReceive(m_hours, m_minutes, m_seconds);
}
}
public static void addBroadcastReceiveListener (BroadcastReceiverListener listener){
if(!listeners.contains(listener)){
listeners.add(listener);
}
}
public void removeBroadcastReceiveListener (BroadcastReceiverListener listener){
if(listeners.contains(listener)){
listeners.remove(listener);
}
}
Hier ist die Deklaration in der manifest - (Kind-Anwendung)
<receiver android:name=".RegisterListener"></receiver>
Edit :
Dies ist der filter habe ich versucht, hinzuzufügen (in der onReceive() )
IntentFilter filter = new IntentFilter(Intent.ACTION_USER_PRESENT);
BroadcastReceiver mReceiver = new RegisterListener();
registerReceiver(mReceiver, filter);
Bekomme ich eine Fehlermeldung :
The method registerReceiver(BroadcastReceiver, IntentFilter) is undefined for the type RegisterListener
Sieht gut aus, wie Sie broadcast-Intents? Poste diesen code.
Wie wäre es mit einem
Ich möchte zu fangen
Meine Antwort an stackoverflow.com/a/40826231/6684508 könnte hilfreich sein.
Wie wäre es mit einem
intent-filter
im Empfänger-Erklärung; check out vogella.com/articles/AndroidBroadcastReceiver/article.htmlIch möchte zu fangen
ACTION_USER_PRESENT
, bevor ich hinzufügen, dass jeder Filter, sollte ich nicht fangen jede Absicht, ohne es ? wie auch immer, ich versuchte, Sie zu Filter hinzufügen, aber wenn ich einen filter hinzufügen, kann es nicht finden, die registerReceiver
Methode.Meine Antwort an stackoverflow.com/a/40826231/6684508 könnte hilfreich sein.
InformationsquelleAutor SagiLow | 2013-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen immer zu hören, für
ACTION_USER_PRESENT
versuchen:Erklärungen
Müssen Sie
registerReceiver()
mit einem Kontext, zum Beispielcontext.registerReceiver(...)
. Aber:Es ist nicht sinnvoll, registrieren Sie einen Empfänger innen
onReceive()
weilonReceive()
wird nicht ausgeführt, bis Sie sich registriert haben, ein receiver... So wird es nie geschehen. Sie können diesen code inonCreate()
in Ihrer Tätigkeit, wie diese:Diese nur hören
ACTION_USER_PRESENT
während Ihre app bereits ausgeführt wird.InformationsquelleAutor Sam
InformationsquelleAutor Gulzar Bhat