Implement content intent for upcoming alarm notification
This commit is contained in:
parent
8b73d87e3a
commit
cae0748c49
@ -237,8 +237,7 @@ public class MainActivity extends BaseActivity {
|
|||||||
mAddItemDrawable = ContextCompat.getDrawable(this, R.drawable.ic_add_24dp);
|
mAddItemDrawable = ContextCompat.getDrawable(this, R.drawable.ic_add_24dp);
|
||||||
|
|
||||||
final int initialPage = getIntent().getIntExtra(EXTRA_SHOW_PAGE, -1);
|
final int initialPage = getIntent().getIntExtra(EXTRA_SHOW_PAGE, -1);
|
||||||
if (initialPage > 0/*0 is already the default page*/
|
if (initialPage >= 0 && initialPage <= mSectionsPagerAdapter.getCount() - 1) {
|
||||||
&& initialPage <= mSectionsPagerAdapter.getCount() - 1) {
|
|
||||||
// Run this only after the ViewPager is finished drawing
|
// Run this only after the ViewPager is finished drawing
|
||||||
mViewPager.post(new Runnable() {
|
mViewPager.post(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -8,8 +8,10 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.support.v4.app.NotificationCompat;
|
import android.support.v4.app.NotificationCompat;
|
||||||
|
|
||||||
|
import com.philliphsu.clock2.alarms.AlarmsFragment;
|
||||||
import com.philliphsu.clock2.util.AlarmController;
|
import com.philliphsu.clock2.util.AlarmController;
|
||||||
|
|
||||||
|
import static android.app.PendingIntent.FLAG_CANCEL_CURRENT;
|
||||||
import static android.app.PendingIntent.FLAG_ONE_SHOT;
|
import static android.app.PendingIntent.FLAG_ONE_SHOT;
|
||||||
import static com.philliphsu.clock2.util.DateFormatUtils.formatTime;
|
import static com.philliphsu.clock2.util.DateFormatUtils.formatTime;
|
||||||
|
|
||||||
@ -62,16 +64,27 @@ public class UpcomingAlarmReceiver extends BroadcastReceiver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Intent in = new Intent(context, UpcomingAlarmReceiver.class)
|
Intent dismissIntent = new Intent(context, UpcomingAlarmReceiver.class)
|
||||||
.putExtra(EXTRA_ALARM, alarm)
|
.setAction(ACTION_DISMISS_NOW)
|
||||||
.setAction(ACTION_DISMISS_NOW);
|
.putExtra(EXTRA_ALARM, alarm);
|
||||||
PendingIntent pi = PendingIntent.getBroadcast(context, (int) id, in, FLAG_ONE_SHOT);
|
PendingIntent piDismiss = PendingIntent.getBroadcast(context, (int) id, dismissIntent, FLAG_ONE_SHOT);
|
||||||
|
Intent contentIntent = new Intent(context, MainActivity.class)
|
||||||
|
// http://stackoverflow.com/a/3128418/5055032
|
||||||
|
// "For some unspecified reason, extras will be delivered only if you've set some action"
|
||||||
|
// This ONLY applies to PendingIntents...
|
||||||
|
// And for another unspecified reason, this dummy action must NOT be the same value
|
||||||
|
// as another PendingIntent's dummy action.
|
||||||
|
.setAction("abc")
|
||||||
|
.putExtra(MainActivity.EXTRA_SHOW_PAGE, MainActivity.PAGE_ALARMS)
|
||||||
|
.putExtra(AlarmsFragment.EXTRA_SCROLL_TO_ALARM_ID, id);
|
||||||
|
PendingIntent piContent = PendingIntent.getActivity(context, (int) id, contentIntent, FLAG_CANCEL_CURRENT);
|
||||||
Notification note = new NotificationCompat.Builder(context)
|
Notification note = new NotificationCompat.Builder(context)
|
||||||
.setSmallIcon(R.drawable.ic_alarm_24dp)
|
.setSmallIcon(R.drawable.ic_alarm_24dp)
|
||||||
.setContentTitle(title)
|
.setContentTitle(title)
|
||||||
.setContentText(text)
|
.setContentText(text)
|
||||||
|
.setContentIntent(piContent)
|
||||||
.setOngoing(true)
|
.setOngoing(true)
|
||||||
.addAction(R.drawable.ic_dismiss_alarm_24dp, context.getString(R.string.dismiss_now), pi)
|
.addAction(R.drawable.ic_dismiss_alarm_24dp, context.getString(R.string.dismiss_now), piDismiss)
|
||||||
.build();
|
.build();
|
||||||
nm.notify(TAG, (int) id, note);
|
nm.notify(TAG, (int) id, note);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,13 +25,8 @@ import com.philliphsu.clock2.util.DelayedSnackbarHandler;
|
|||||||
|
|
||||||
import static com.philliphsu.clock2.util.FragmentTagUtils.makeTag;
|
import static com.philliphsu.clock2.util.FragmentTagUtils.makeTag;
|
||||||
|
|
||||||
public class AlarmsFragment extends RecyclerViewFragment<
|
public class AlarmsFragment extends RecyclerViewFragment<Alarm, BaseAlarmViewHolder, AlarmCursor,
|
||||||
Alarm,
|
AlarmsCursorAdapter> implements BaseTimePickerDialog.OnTimeSetListener {
|
||||||
BaseAlarmViewHolder,
|
|
||||||
AlarmCursor,
|
|
||||||
AlarmsCursorAdapter>
|
|
||||||
implements ScrollHandler, // TODO: Move interface to base class
|
|
||||||
BaseTimePickerDialog.OnTimeSetListener {
|
|
||||||
private static final String TAG = "AlarmsFragment";
|
private static final String TAG = "AlarmsFragment";
|
||||||
|
|
||||||
private static final String KEY_EXPANDED_POSITION = "expanded_position";
|
private static final String KEY_EXPANDED_POSITION = "expanded_position";
|
||||||
@ -46,6 +41,7 @@ public class AlarmsFragment extends RecyclerViewFragment<
|
|||||||
|
|
||||||
// TODO: Delete this. We no longer use the system's ringtone picker.
|
// TODO: Delete this. We no longer use the system's ringtone picker.
|
||||||
public static final int REQUEST_PICK_RINGTONE = 1;
|
public static final int REQUEST_PICK_RINGTONE = 1;
|
||||||
|
public static final String EXTRA_SCROLL_TO_ALARM_ID = "com.philliphsu.clock2.alarms.extra.SCROLL_TO_ALARM_ID";
|
||||||
|
|
||||||
private AsyncAlarmsTableUpdateHandler mAsyncUpdateHandler;
|
private AsyncAlarmsTableUpdateHandler mAsyncUpdateHandler;
|
||||||
private AlarmController mAlarmController;
|
private AlarmController mAlarmController;
|
||||||
@ -96,6 +92,11 @@ public class AlarmsFragment extends RecyclerViewFragment<
|
|||||||
mTimePickerDialogController = new TimePickerDialogController(
|
mTimePickerDialogController = new TimePickerDialogController(
|
||||||
getFragmentManager(), getActivity(), this);
|
getFragmentManager(), getActivity(), this);
|
||||||
mTimePickerDialogController.tryRestoreCallback(makeTimePickerDialogTag());
|
mTimePickerDialogController.tryRestoreCallback(makeTimePickerDialogTag());
|
||||||
|
|
||||||
|
long scrollToStableId = getActivity().getIntent().getLongExtra(EXTRA_SCROLL_TO_ALARM_ID, -1);
|
||||||
|
if (scrollToStableId != -1) {
|
||||||
|
setScrollToStableId(scrollToStableId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -25,11 +25,7 @@ import com.philliphsu.clock2.model.TimersListCursorLoader;
|
|||||||
import static butterknife.ButterKnife.findById;
|
import static butterknife.ButterKnife.findById;
|
||||||
import static com.philliphsu.clock2.util.ConfigurationUtils.getOrientation;
|
import static com.philliphsu.clock2.util.ConfigurationUtils.getOrientation;
|
||||||
|
|
||||||
public class TimersFragment extends RecyclerViewFragment<
|
public class TimersFragment extends RecyclerViewFragment<Timer, TimerViewHolder, TimerCursor, TimersCursorAdapter> {
|
||||||
Timer,
|
|
||||||
TimerViewHolder,
|
|
||||||
TimerCursor,
|
|
||||||
TimersCursorAdapter> {
|
|
||||||
// TODO: Different number of columns for different display densities, instead of landscape.
|
// TODO: Different number of columns for different display densities, instead of landscape.
|
||||||
// Use smallest width qualifiers. I can imagine 3 or 4 columns for a large enough tablet in landscape.
|
// Use smallest width qualifiers. I can imagine 3 or 4 columns for a large enough tablet in landscape.
|
||||||
private static final int LANDSCAPE_LAYOUT_COLUMNS = 2;
|
private static final int LANDSCAPE_LAYOUT_COLUMNS = 2;
|
||||||
@ -44,8 +40,6 @@ public class TimersFragment extends RecyclerViewFragment<
|
|||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
mAsyncTimersTableUpdateHandler = new AsyncTimersTableUpdateHandler(getActivity(), this);
|
mAsyncTimersTableUpdateHandler = new AsyncTimersTableUpdateHandler(getActivity(), this);
|
||||||
|
|
||||||
// TimerNotificationService was supposed to put this extra in its content intent.
|
|
||||||
// Currently, it does not implement this feature. May be left for a future release?
|
|
||||||
long scrollToStableId = getActivity().getIntent().getLongExtra(EXTRA_SCROLL_TO_TIMER_ID, -1);
|
long scrollToStableId = getActivity().getIntent().getLongExtra(EXTRA_SCROLL_TO_TIMER_ID, -1);
|
||||||
if (scrollToStableId != -1) {
|
if (scrollToStableId != -1) {
|
||||||
setScrollToStableId(scrollToStableId);
|
setScrollToStableId(scrollToStableId);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user