Я пытаюсь выполнить действия, выполняемые при замене батареи. Для этого я использовал следующий код:
public class BatteryBroadcastReceiver extends
BroadcastReceiver {
DatabaseHelper db;
@Override
public void onReceive(Context context, Intent intent) {
db = new DatabaseHelper(context);
String cont1 = db.usercontact().toString();
String action = intent.getAction();
if (action != null && action.equals(Intent.ACTION_BATTERY_CHANGED)) {
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,-1);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE,-1);
int percentage = level * 100 / scale;
if(percentage <= 20){
// doing something like getting location
}
}
}
Я зарегистрировал свою трансляцию в своей деятельности:
public class Battery extends AppCompatActivity {
private BatteryBroadcastReceiver batteryReceiver = new BatteryBroadcastReceiver();
private IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_auto_location);
}
@Override
protected void onResume(){
super.onResume();
registerReceiver(batteryReceiver,intentFilter);
}
@Override
protected void onPause(){
unregisterReceiver(batteryReceiver);
super.onPause();
}
Этот общий фрагмент кода работает нормально, но он ограничивает менятолько это действие (может быть потому, что трансляция зарегистрирована в этом действии). Как и до тех пор, пока эта активность остается открытой, я могу выполнять какую-то задачу, но когда я ее закрываю, когда батарея разряжается, она не выполняет никаких задач. Теперь я не знаю, что делать. У меня есть другие действия в моем приложении, и я хочу, чтобы оно работало, даже когда я не в этом действии. Есть ли способ, чтобы я мог зарегистрировать его в манифесте, чтобы он мог работать в целом. Я пытался сделать это, но потом ничего не происходит при замене батареи. Заранее спасибо за помощь:).