Android BroadcastReceiver не работает, когда приложение установлено из игрового магазина

У меня есть служба, которая получает обновления батареи через Intent.ACTION_BATTERY_CHANGED:

batteryFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
batteryReceiver = new BatteryReceiver();

и получатель:

public void onReceive(Context context, Intent intent) {

    String action = intent.getAction();
    if(action.equals(Intent.ACTION_POWER_CONNECTED)) {
        onBattery = false;
        Log.w("battery","on power");
    }
    else if(action.equals(Intent.ACTION_POWER_DISCONNECTED)) {
        Log.w("battery","on battery");
        onBattery = true;
    }
}

Это работает точно так, как ожидалось, когда приложение установлено через отладку по USB. После того, как я опубликовал это в магазине игр и сделал новую установку оттуда, это не работает. Другие приемники тоже не работают в приложении. Остальная часть приложения, кажется, работает правильно, просто не работают приемники вещания. Из-за чего это могло произойти?

Это андроид 2.2, и это обновление приложения, которое уже было в магазине, приемник работал нормально и до обновления.


person user1596144    schedule 13.08.2012    source источник


Ответы (1)


Если вы работаете на Android 3.1+ и не запускали один из своих компонентов вручную (например, не запускали активность из панели запуска), ни один из ваших BroadcastReceiver, зарегистрированных в манифесте, не будет работать.

person CommonsWare    schedule 13.08.2012
comment
Это на Android 2.2, и это обновление существующего приложения, поэтому оно уже было запущено вручную один раз. Эти приемники также не регистрируются в манифесте, а настраиваются через IntentFilter в коде. Приемники работали до этого обновления... (и, конечно, корректно работают при отладке по usb). - person user1596144; 13.08.2012
comment
@ user1596144: Откуда вы знаете, что ваша служба работает? - person CommonsWare; 13.08.2012
comment
Я использую startForeground, и уведомление отображается в левом верхнем углу. Все остальные аспекты приложения работают корректно. - person user1596144; 14.08.2012
comment
@ user1596144: Тогда, если что-то не так, из-за чего ваш сервис не проходит пути кода, которые регистрируют получатели, у меня нет объяснения ваших симптомов. - person CommonsWare; 14.08.2012