У меня небольшая проблема в 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));




Вы забыли создать экземпляр своего PowerConnectionReceiver.
Intent intent = getApplicationContext().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
должно быть
Intent intent = getApplicationContext().registerReceiver(PowerConnectionReceiver() , new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
Еще лучше было бы сохранить ссылку, чтобы вы могли снова отменить регистрацию в onStop().
действительно, в документации сказано, что вам не нужно передавать получателя. Странно, что это не работает. Вы уверены, что аккумулятор поменяли? Ну, на самом деле вы должны получить событие, когда просто зарегистрируете получателя ...
@Chrasonier, ты понял это?
Спасибо за быстрый ответ, но до сих пор безрезультатно. Событие ACTION_POWER_CONNECTED работает даже без регистрации