Как запустить приложение только для Android-приложений

Я создаю приложение, единственным компонентом которого является service которая продолжает работать в фоновом режиме (в основном прокси-сервер), но я не могу найти способ запуска этой службы. Приложение не может иметь никакого пользовательского интерфейса или взаимодействия с пользователем, поэтому я не использую Activity.
Broadcast receiver может прослушивать широковещательную рассылку BOOT, но как мне начать работу в первый раз, когда она установлена, и как я могу ее запустить? Или есть трансляция, которую я могу прослушать после установки приложения, например, может быть TIME_TICK, но это должно быть зарегистрировано из активности, я думаю.

Solutions Collecting From Web of "Как запустить приложение только для Android-приложений"

К сожалению, сейчас нет надежного способа получения широковещательного события после того, как приложение было установлено, ACTION_PACKAGE_ADDED Intent не транслируется на вновь установленный пакет.

Для получения события ACTION_BOOT_COMPLETED вам понадобится класс вещательного приемника, а также ваш сервис. Я также рекомендовал бы добавить намерение ACTION_USER_PRESENT, которое должно быть уловлено этим широковещательным приемником, для этого требуется Android 1.5 (minSDK = 3), это вызовет вашего широковещательного приемника всякий раз, когда пользователь разблокирует свой телефон. Последнее, что вы можете сделать, чтобы попытаться сохранить свою работу без автоматического ее отключения, – это вызвать Service.setForeground () в вашей службе onCreate, чтобы сообщить Android, что ваша служба не должна останавливаться, это было добавлено в основном Для служб типа mp3-плееров, которые должны продолжать работать, но могут использоваться любой службой.

Убедитесь, что вы добавили правильные разрешения для событий boot_complete и user_present в манифестах.

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

 package com.snctln.util.WeatherStatus; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class WeatherStatusServiceReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if(intent.getAction() != null) { if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED) || intent.getAction().equals(Intent.ACTION_USER_PRESENT)) { context.startService(new Intent(context, WeatherStatusService.class)); } } } }; 

Удачи.

Верните START_STICKY в Service.onStartCommand

Android перезапустит вашу службу

Я исследую тот же вопрос. Вот что я нашел: http://kfb-android.blogspot.de/2009/04/registering-for-timetick-after-reboot.html

Эта простая небольшая демонстрация демонстрирует решение, играя немного пинг-понга между BroadcatReceiver и службой. Получатель зарегистрирован для начала во время загрузки, зарегистрировавшись в манифесте, чтобы получить ACTION_BOOT_COMPLETED. Он только начинает службу при получении ACTION_BOOT_COMPLETED. Служба, в свою очередь, регистрирует BroadcastReceiver, а затем ACTION_TIME_TICK.

Логика приложения будет реализована в BroadcastReceiver.