Reputation: 1255
Here is my code below, what is the problem? If i look at log, there is no start of AlarmReceiver class. So no notification is sent to user. I tried every minute in loop and still nothing happened. What am i doing wrong?
Thanks in Advance!!
public void setRepeatingAlarm(int hour, int min)
{
Intent myIntent = new Intent(this , AlarmReceiver.class);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, myIntent, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, min);
calendar.set(Calendar.SECOND, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, pendingIntent);
}
//Receiver Class AlarmReceiver
public void onReceive(Context context, Intent intent)
{
taskDb = new TaskDb(context);
PendingIntent pIntent = PendingIntent.getActivity(context, 0, intent, 0);
String temp ="";
for(String s: taskDb.selectTodayTasks())
{
temp +="-" + s + "\n";
}
if(!temp.equals("")) {
Notification n = new Notification.Builder(context)
.setContentTitle(context.getString(R.string.today_tasks))
.setContentText(temp)
.setLights(Color.CYAN,500,500)
.setContentIntent(pIntent)
.setPriority(Notification.PRIORITY_MAX)
.setAutoCancel(true).build();
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(MainActivity.NOTIFICATION_SERVICE);
notificationManager.notify(0, n);
}
}
//android manifest
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".main.MainActivity"
android:windowSoftInputMode="stateHidden"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".background.AlarmReceiver" android:enabled="true">
</receiver>
</application>
Upvotes: 1
Views: 222
Reputation: 132992
Change PendingIntent.getService
to PendingIntent.getBroadcast
:
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, myIntent, 0);
Because PendingIntent.getService is used to Retrieve a PendingIntent that will start a service,... but PendingIntent.getBroadcast for Retrieve a PendingIntent that will perform a broadcast,...
Upvotes: 3