I am trying to start an alarm service that repeats every day at a particular time. I have gone through a lot of threads on stack overflow regarding this but no luck. I followed a few tutorials: http://karanbalkar.com/2013/07/tutorial-41-using-alarmmanager-and-broadcastreceiver-in-android/ and http://javatechig.com/android/repeat-alarm-example-in-android
My service is never started and I do not understand why. Below is my code:
My Manifest file:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<application>
<service android:name="com.paper.DownloadService" android:enabled="true"/>
<receiver android:name="com.paper.MyReceiver" ></receiver>
</application>
My Receiver Class:
public class MyReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context rcontext, Intent intent)
{
Log.e("Main Activity", "inside on receive of myreceiver");
Intent service1 = new Intent(rcontext, DownloadService.class);
rcontext.startService(service1);
}
}
My Service Class:
public class DownloadService extends Service {
@Override
public void onCreate() {
// TODO Auto-generated method stub
Log.e("Download Service", "CREATED");
}
@SuppressLint({ "SimpleDateFormat", "NewApi" }) @Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Log.e("Download Service", "STARTED");
return START_NOT_STICKY;
}
}
My Main Activity (Inside On Create Method):
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 15);
calendar.set(Calendar.MINUTE, 29);
Intent myIntent = new Intent(this, MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(this, 0, myIntent,0);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pendingIntent);
Here, I am trying to set up my alarm at 3:29 pm every day but the service does not get started at that time or any time for that matter. Any help would be appreciated. Thanks!
Then, to trigger an alarm, use the following (for instance in your main activity): AlarmManager alarmMgr = (AlarmManager)getSystemService(Context. ALARM_SERVICE); Intent intent = new Intent(this, MyAlarmReceiver. class); PendingIntent pendingIntent = PendingIntent.
Here is what I did to get it working:
1) Added <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
to my manifest file.
2) Changed code in my Main activity to:
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, 3);
calendar.set(Calendar.MINUTE, 29);
calendar.set(Calendar.AM_PM, Calendar.PM);
Intent myIntent = new Intent(this, MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(this, 0, myIntent,0);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pendingIntent);
Hope someone finds this helpful!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With