Frage

Ich kann meinen Rundfunkstock nicht registrieren. Immer wenn ich versuche, meinen Code auszuführen, zeigt er in LogCat "Receiver nicht registrieren".

Hier ist mein Code, in dem ich meinen Empfänger regiere:

public class Preferences extends PreferenceActivity {
    private Button button;
    ListPreference lp;
    private Context context;
    private long duration;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
        context = this;
        lp = (ListPreference) findPreference("autoduration");
        final Intent intent = new Intent(context, BackService.class);
        lp.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                String newSelection = newValue.toString();
                int index = lp.findIndexOfValue(newSelection);
                stopService(intent);
                if (index == 0) {
                    duration = 15000;
                } else if (index == 1) {
                   duration = 12000;
                } else if (index == 2) {
                    duration = 10000;
                } else if (index == 3) {
                    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
                    filter.addAction(Intent.ACTION_SCREEN_OFF);
                    BroadcastReceiver receiver = new ScreenReceiver();
                    registerReceiver(receiver, filter);
                }
                intent.putExtra("duration", duration);
                startService(intent);
                return true;
            }
        });
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        unregisterReceiver(receiver);
    }
}

Und das ist mein Empfänger:

public class ScreenReceiver extends BroadcastReceiver {
    public static boolean screenOn = true;
    private static final String TAG = "ScreenReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
             screenOn = true;
             Log.e(TAG, "I am receiver");
        } else {
            screenOn = false;
        }
    }
}
War es hilfreich?

Lösung

Ihr Registercode kann 2 und mehrmals aufgerufen werden, bevor Unregister stattfindet. Bist du sicher, dass es nicht das Problem ist?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top