Я пытаюсь настроить приемник будильника сразу после загрузки. Поэтому у меня есть OnBootReceiver, который должен зарегистрировать сигнал тревоги. OnBootReceiver работает, и его вызывают, но каким-то образом он не может найти мой класс AlarmReceiver.
OnBootReceiver, который успешно запускается после загрузки:
public class OnBootReceiver extends BroadcastReceiver {
private static final String TAG = "OnBootReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "called");
Intent i = new Intent(context, com.packagenames.AlarmReceiver.class);
PendingIntent pi = PendingIntent.getService(context, 0, i, 0);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Calendar time = Calendar.getInstance();
time.setTimeInMillis(System.currentTimeMillis());
time.add(Calendar.SECOND, 30);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), time.getTimeInMillis(), pi);
}
}
Как вы можете видеть, он настраивает сигнал тревоги при попытке вызвать com.packagenames.AlarmReceiver.class. Этот класс существует и находится в том же пакете:
public class AlarmReceiver extends BroadcastReceiver {
private static final String TAG = "AlarmReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "alarm received");
Intent i = new Intent(context, com.packagename.DataService.class);
i.putExtra("action", "process");
context.startService(i);
}
}
К сожалению, я получаю следующую ошибку:
02-03 09: 22: 25.344: W / ActivityManager (103): невозможно запустить службу
Намерение {flg = 0x4 cmp = com.phonegap.packagename / .AlarmReceiver (имеет дополнения)
}: не найдено
Манифест Android выглядит следующим образом
<application>
// activities etc
<receiver
android:name="com.phonegap.packagename.OnBootReceiver"
android:enabled="true"
android:exported="false"
android:label="OnBootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver
android:name="com.phonegap.packagename.AlarmReceiver"
android:enabled="true"
android:label="AlarmReceiver">
<intent-filter>
</intent-filter>
</receiver>
</application>
Вы видите ошибку? Может я что то забыл?
Спасибо
edit: в манифесте я добавил
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
, чтобы заставить работать OnBootReceiver. Нужно ли что-то подобное для будильника?