Из всего, что я видел на Stack Exchange и в других местах, у меня все настроено правильно, чтобы запускать IntentService при загрузке ОС Android. К сожалению, он не запускается при загрузке, и я не получаю никаких ошибок. Может, специалисты помогут ...
Манифест:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.phx.batterylogger"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="internalOnly">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<service android:name=".BatteryLogger"/>
<receiver android:name=".StartupIntentReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
BroadcastReceiver для запуска:
package com.phx.batterylogger;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class StartupIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent(context, BatteryLogger.class);
context.startService(serviceIntent);
}
}
ОБНОВЛЕНИЕ : я попробовал почти все предложения, приведенные ниже, и добавил ведение журнала, например, Log.v("BatteryLogger", "Got to onReceive, about to start service");
в обработчик onReceive StartupIntentReceiver, и ничего не регистрируется. Так что он даже не попадает в BroadcastReceiver.
Я думаю, что развертываю APK и тестирую правильно, просто запускаю Debug в Eclipse, и консоль сообщает, что успешно устанавливает его на мой планшет Xoom в \ BatteryLogger \ bin \ BatteryLogger.apk. Затем для проверки перезагружаю планшет, затем просматриваю логи в DDMS и проверяю «Работающие службы» в настройках ОС. Все это звучит правильно, или я что-то упускаю? Опять же, любая помощь приветствуется.
Log.v("BatteryLogger", "Got to onReceive, about to start service");
в обработчик onReceive, и он никогда не отображается в журналах. Значит, слушатель терпит неудачу (?)Ответы:
Вот полный пример приложения AutoStart.
AndroidManifest файл
autostart.java
service.java
hello.java - это будет всплывать каждый раз при запуске устройства после выполнения приложения Applicaton один раз.
источник
Ваша Служба может быть отключена до завершения из-за того, что устройство переходит в спящий режим после загрузки. Сначала вам нужно получить блокировку слежения. К счастью, библиотека поддержки дает нам класс для этого:
затем в вашем Сервисе не забудьте снять блокировку пробуждения:
Не забудьте добавить разрешение WAKE_LOCK:
источник
Следующее должно работать. Я проверил. Может быть ваша проблема в другом.
источник
Log()
утверждений там нет, и устройство эмулятора не показывает, что моя служба работает в настройках ОС. Вот ошибка в DDMS:System.err - at com.phx.batterylogger$1.onReceive(BatteryLogger.java:43)
Означает ли это, что проблема находится в строке 43 моей службы BatteryLogger?Я нашел способ заставить ваше приложение работать нормально при перезагрузке устройства, пожалуйста, выполните следующие действия, чтобы добиться успеха.
AndroidManifest файл
UIBootReceiver
Это запрашивает разрешение не управлять экономией заряда батареи для этого приложения, чтобы вы могли стабильно работать в фоновом режиме.
Объявите этот код в onCreate () класса MainActivity:
источник
Очень похоже на мой но я использую полное имя пакета для приемника:
У меня есть:
источник
Я добился успеха без полного пакета, вы знаете, где прерывается цепочка вызовов? Если вы отлаживаете
Log()
, в какой момент он больше не работает?Я думаю, что это может быть в вашем IntentService, все выглядит нормально.
источник
Log.v("BatteryLogger", "Got to onReceive, about to start service");
в обработчик onReceive, и он никогда не отображается в журналах. Значит, слушатель терпит неудачу (?)Чтобы упростить поиск, как упоминалось в комментариях,
это невозможно сверсии3.1https://stackoverflow.com/a/19856367/6505257источник