Ответ 1
К сожалению, сейчас нет надежного способа получения трансляционного события после установки вашего приложения, 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));
}
}
}
};
Удачи.