У меня есть службы «GroupsTaskAlarmChecker», который вызывается каждые 20 секунд от AlarmManager в OnCreate деятельности Groups.class таким образом:AlarmManager внутри BroadcastReceiver когда BOOT_COMPLETED
int seconds = 20;
Intent myIntent = new Intent(Groups.this, GroupsTaskAlarmChecker.class);
pendingIntent = PendingIntent.getService(Groups.this, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 10);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), seconds * 1000, pendingIntent);
Это прекрасно работает. Но мне нужно сделать это при загрузке устройства. Тогда я знаю, что я должен сделать AndroidManifest так:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:name=".ReceiverBoot">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED">
<category android:name="android.intent.category.HOME">
</category></action></intent-filter>
</receiver>
, а затем миль BroadcastReceiver как это:
public class ReceiverBoot extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int seconds = 20;
Intent myIntent = new Intent(context, GroupsTaskAlarmChecker.class);
pendingIntent = PendingIntent.getService(context, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 10);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), seconds * 1000, pendingIntent);
}
}
, но внутри этого OnReceive я не знаю, как я могу сделать то же самое, что я делал раньше (с намерением и alarmManager запускать службу каждые 20 секунд). Ошибка в этой строке:
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Возможно, что я не могу сделать AlarmManager внутри BroadcastReceiver?
Благодарю вас всех, я являюсь разработчиком Android, и мне нужна ваша помощь. Извините за мой английский;)
Я забыл написать эту строку в этом вопросе, но не в коде @Jacob. и init, которые принимают широковещательные работы (до того, как я проведу операцию init и ее ОК), я просто хочу знать о написании первого кода, который я написал, в метод onReceive. Это возможно? – carlosdiazp