Intereting Posts
Android: запуск службы с помощью Context.startService vs PendingIntent.getService Android изменит и установит локаль по умолчанию в приложении. Позиция активности диалогового окна Android Spannable RecyclerView, например Snapchat-Discover Импортирование CardView и RecyclerView (Android 5.0) в мой существующий проект (eclipse) Показать мягкую клавиатуру в AlertDialog с помощью WebView внутри (Android) Как использовать классы Android «Surface»? Android RelativeLayout, равный интервал? Как определить, открыто ли приложение Android из сообщения «Уведомление»? SwipeRefreshLayout – проведите пальцем вниз, чтобы обновить, но не сдвинуть вид вниз Android studio nullpointer предупреждения / уведомление в виде кода Android ContentProvider getType () вызывается, когда и почему Узнать, прослушивает ли дочерний прослушиватель событий на Firebase все данные Андроид expandablelistview не расширяет или не получает события кликов Android Linear Layout – Как сохранить элемент в нижней части экрана?

Я не могу получать трансляцию при изменении состояния батареи?

У меня такая же проблема, как и этот пост: приемник для вещания батареи не работает . Но, похоже, никто не ответил на этот вопрос.

Вот мой BroadcastReceiver:

public class BatteryLevelReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Log.v("plugg", "plug change fired"); Toast.makeText(context, " plug change fired", Toast.LENGTH_LONG).show(); } 

И вот мой AndroidManifest.xml:

 <receiver android:name=".ReceversAndServices.BatteryLevelReceiver"> <intent-filter android:priority="900"> <action android:name="android.intent.action.BATTERY_LOW" /> </intent-filter> </receiver> <receiver android:name=".ReceversAndServices.BatteryLevelReceiver"> <intent-filter android:priority="900"> <action android:name="android.intent.action.BATTERY_CHANGED" /> </intent-filter> </receiver> 

Я также добавил эту строку в манифест:

 <uses-permission android:name="android.permission.BATTERY_STATS"/> 

Но до сих пор нет успеха!

Я был бы очень признателен, если бы кто-нибудь мог мне посоветовать, что я делаю неправильно.

Solutions Collecting From Web of "Я не могу получать трансляцию при изменении состояния батареи?"

Из документации для ACTION_BATTERY_CHANGED :

Вы не можете получить это через компоненты, объявленные в манифесте, только путем явной регистрации для него с помощью Context.registerReceiver (). См. ACTION_BATTERY_LOW, ACTION_BATTERY_OKAY, ACTION_POWER_CONNECTED и ACTION_POWER_DISCONNECTED для различных широковещательных сообщений, связанных с батареей, которые отправляются и могут быть получены через приемники манифеста.

Там у вас есть: вы должны явно зарегистрировать его с вашего Java-кода.

Я просто следил за Руководством разработчика Android по мониторингу уровня заряда батареи и состояния зарядки и имел немедленный успех. Если BatteryLevelReceiver – это собственный класс, я бы рекомендовал:

 <receiver android:name=".BatteryLevelReceiver"> <intent-filter android:priority="900"> <action android:name="android.intent.action.BATTERY_LOW" /> <action android:name="android.intent.action.BATTERY_CHANGED" /> </intent-filter> </receiver> 

прибавление

Я готов догадаться, что вы написали BatteryLevelReceiver как вложенный класс в ReceversAndServices. Согласно Получателю как внутренний класс в Android , вы не можете делать это с нестационарными классами. Вы можете сделать BatteryLevelReceiver статическим классом и зарегистрировать ресивер в onResume (), но тогда ваше приложение должно будет работать, чтобы поймать события … Переместите ваш приемник в отдельный класс и зарегистрируйте эти намерения:

 <receiver android:name=".BatteryLevelReceiver"> <intent-filter android:priority="900"> <action android:name="android.intent.action.BATTERY_LOW" /> <action android:name="android.intent.action.BATTERY_OKAY" /> <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> </intent-filter> </receiver> 

(Не BATTERY_CHANGED, как указал Darshan Computing.)

Убедитесь, что у вас есть класс приемника аккумулятора не как подкласс другого, а как отдельный класс в вашем проекте.

Также попробуйте использовать метод Context.registerReceiver () явно в вашем коде и не забудьте его отменить: http://developer.android.com/reference/android/content/Context.html#registerReceiver%28android.content.BroadcastReceiver,% 20android.content.IntentFilter% 29