Я пытаюсь зарегистрировать свою службу для запуска при загрузке телефона.
Я настроил BOOT_COMPLETED BroadcastReciever в своем классе обслуживания:
public int onStartCommand(Intent intent, int flags, int startId)
{
startService(intent);
_bootCompletedReciever = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
Log.d(TAG, "Got boot completed");
}
};
IntentFilter filter = new IntentFilter("android.intent.action.BOOT_COMPLETED");
registerReceiver(_bootCompletedReciever, filter);
return START_NOT_STICKY;
}
Однако он не вызывается. У меня есть разрешение, установленное в моем манифесте:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Знаете ли вы, чего мне не хватает, чтобы эта трансляция запускалась в моем сервисе при загрузке телефона (без регистрации для трансляции в манифесте)?
Ответить
В этом случае мне пришлось использовать XML для регистрации класса, который вызывает мою службу при загрузке:
public class BootBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Intent service = new Intent(context, S_GPS.class);
context.startService(service);
}
}
И в манифесте:
<receiver android:name=".BroadcastReceivers.BootBroadcastReceiver" android:enabled="true" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>