Я не могу зарегистрировать свой BroadcastReceiver.Всякий раз, когда я пытаюсь выполнить свой код, в logcat отображается сообщение «Невозможно зарегистрировать получателя».
Вот мой код, в котором я регистрирую получателя:
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);
}
}
и это мой получатель:
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;
}
}
}