ACTION_BATTERY_CHANGED не работает

У меня небольшая проблема в Androidstudio с приложением состояния батареи. Имею такой ресивер:

<receiver android:name = ".PowerConnectionReceiver">
    <intent-filter>
        <action android:name = "android.intent.action.BOOT_COMPLETED"/>
        <action android:name = "android.intent.action.BATTERY_CHANGED"/>
        <action android:name = "android.intent.action.ACTION_POWER_CONNECTED"/>
        <action android:name = "android.intent.action.ACTION_POWER_DISCONNECTED"/>
    </intent-filter>

Но PowerConnectionReceiver работает только с событием ACTION_POWER_ *. Событие смены батареи не работает

public class PowerConnectionReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {

    if (intent.getAction().equals(Intent.ACTION_POWER_CONNECTED)) 
        Toast.makeText(context, "Loading", Toast.LENGTH_SHORT).show();  

    else if (intent.getAction().equals(Intent.ACTION_POWER_DISCONNECTED)) 
        Toast.makeText(context, "not loading", Toast.LENGTH_SHORT).show();

    Toast.makeText(context, "test toast", Toast.LENGTH_SHORT).show();
}
}



Intent intent = getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
513
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы забыли создать экземпляр своего PowerConnectionReceiver.

Intent intent = getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

должно быть

Intent intent = getApplicationContext().registerReceiver(PowerConnectionReceiver() , new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

Еще лучше было бы сохранить ссылку, чтобы вы могли снова отменить регистрацию в onStop().

Спасибо за быстрый ответ, но до сих пор безрезультатно. Событие ACTION_POWER_CONNECTED работает даже без регистрации

Chrasonier 25.03.2018 18:02

действительно, в документации сказано, что вам не нужно передавать получателя. Странно, что это не работает. Вы уверены, что аккумулятор поменяли? Ну, на самом деле вы должны получить событие, когда просто зарегистрируете получателя ...

leonardkraemer 25.03.2018 20:02

@Chrasonier, ты понял это?

leonardkraemer 26.03.2018 19:15

Другие вопросы по теме