From c32aef7c865b1c08e9f638e49ca721d0af3431ef Mon Sep 17 00:00:00 2001 From: tim Date: Wed, 26 Mar 2014 16:29:35 +0200 Subject: [PATCH] Fixed bug where, on app reinstall, the notification actions stopped working due to losing permission for gracecancellationpendingintent. --- .../hypoalarm/AlarmAlertActivity.java | 1 - .../org/treehouse/hypoalarm/AlarmNotify.java | 24 ++++++++++-------- .../treehouse/hypoalarm/AlarmReceiver.java | 5 ---- .../hypoalarm/CancelGraceReceiver.java | 4 --- .../org/treehouse/hypoalarm/MainActivity.java | 7 ----- ...{ic_grayscale.png => ic_launcher_grey.png} | Bin ...{ic_grayscale.png => ic_launcher_grey.png} | Bin ...{ic_grayscale.png => ic_launcher_grey.png} | Bin .../main/res/drawable-xxhdpi/ic_grayscale.png | Bin 31442 -> 0 bytes 9 files changed, 14 insertions(+), 27 deletions(-) rename HypoAlarm/src/main/res/drawable-hdpi/{ic_grayscale.png => ic_launcher_grey.png} (100%) rename HypoAlarm/src/main/res/drawable-mdpi/{ic_grayscale.png => ic_launcher_grey.png} (100%) rename HypoAlarm/src/main/res/drawable-xhdpi/{ic_grayscale.png => ic_launcher_grey.png} (100%) delete mode 100644 HypoAlarm/src/main/res/drawable-xxhdpi/ic_grayscale.png diff --git a/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/AlarmAlertActivity.java b/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/AlarmAlertActivity.java index df30cb3..30ac659 100644 --- a/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/AlarmAlertActivity.java +++ b/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/AlarmAlertActivity.java @@ -45,7 +45,6 @@ public class AlarmAlertActivity extends Activity { setContentView(R.layout.alarm_alert); notifyIntent = new Intent(getApplicationContext(), AlarmNotify.class); - // Disable any current notifications stopService(notifyIntent); diff --git a/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/AlarmNotify.java b/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/AlarmNotify.java index 1e86488..5f5c976 100644 --- a/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/AlarmNotify.java +++ b/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/AlarmNotify.java @@ -15,7 +15,7 @@ import android.util.Log; public class AlarmNotify extends Service { public static final int notifyID = 1; - private volatile boolean threadRunning = false; + public volatile boolean notificationRunning = false; @Override public IBinder onBind(Intent intent) { @@ -25,7 +25,8 @@ public class AlarmNotify extends Service { @Override public void onDestroy() { // If the notification is cancelled, stop updating. - threadRunning = false; + notificationRunning = false; + Log.d("AlarmNotify", "1: Setting notificationRunning to false"); // Remove the notification in the notification bar NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); nm.cancel(notifyID); @@ -41,7 +42,6 @@ public class AlarmNotify extends Service { // convert gracePeriod to milliseconds and calculate when it'll fire final long endTime = System.currentTimeMillis() + (gracePeriod * 60 * 1000); - //Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.alarm_notification); Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher_grey); final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); final Notification.Builder notification = new Notification.Builder(this) @@ -50,13 +50,12 @@ public class AlarmNotify extends Service { .setSmallIcon(R.drawable.alarm_notification) .setLargeIcon(bm) .setOnlyAlertOnce(true) - .setAutoCancel(true) + .setAutoCancel(false) .setPriority(Notification.PRIORITY_HIGH); - //.setContentText(String.format(getString(R.string.notificationText), phoneNumber) + MainActivity.MinutesToGracePeriodStr(gracePeriod)) // Set up dismiss action Intent cancellerIntent = new Intent(getBaseContext(), CancelGraceReceiver.class); - PendingIntent cancellerPendingIntent = PendingIntent.getBroadcast(getBaseContext(), MainActivity.CANCEL_GRACE_REQUEST, cancellerIntent, 0); + PendingIntent cancellerPendingIntent = PendingIntent.getBroadcast(getBaseContext(), MainActivity.CANCEL_GRACE_REQUEST, cancellerIntent, PendingIntent.FLAG_CANCEL_CURRENT); // Cancel the grace period if the user clears the notification notification.setDeleteIntent(cancellerPendingIntent); @@ -65,11 +64,14 @@ public class AlarmNotify extends Service { // Allow the user to cancel by selecting the ContentText or ContentTitle notification.setContentIntent(cancellerPendingIntent); - // TODO load alert activity (without sound or vibration) on select? This would allow the user to test competence + /** + * TODO load alert activity (without sound or vibration) on select? + * TODO This would allow the user to test competence Intent alertActivityIntent = new Intent(this, AlarmAlertActivity.class); alertActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); - //notification.setContentIntent(alertActivityIntent); + notification.setContentIntent(alertActivityIntent); + */ nm.cancel(notifyID); nm.notify(notifyID, notification.build()); @@ -77,7 +79,8 @@ public class AlarmNotify extends Service { new Thread(new Runnable() { @Override public void run() { - threadRunning = true; + notificationRunning = true; + Log.d("AlarmNotify", "2: Setting notificationRunning to true"); int max = 1000; // Convert endTime from milliseconds to seconds, and translate to time remaining int secondsLeft = (int) ((endTime - System.currentTimeMillis())) / (1000); @@ -87,7 +90,8 @@ public class AlarmNotify extends Service { while (progress < max) { // Stop the thread if cancelled elsewhere - if (!threadRunning) { + Log.d("AlarmNotify", "notificationRunning is "+notificationRunning); + if (!notificationRunning) { return; } int minutesLeft = secondsLeft / 60; diff --git a/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/AlarmReceiver.java b/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/AlarmReceiver.java index 85a092a..9718223 100644 --- a/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/AlarmReceiver.java +++ b/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/AlarmReceiver.java @@ -24,11 +24,6 @@ public class AlarmReceiver extends BroadcastReceiver { Boolean alarmActive = sharedPref.getBoolean(context.getString(R.string.AlarmActivePref), true); if (alarmActive) { - - // Cancel notification if it's not already cancelled. - NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - nm.cancel(AlarmNotify.notifyID); - // Set a grace period alarm to send SMS int gracePeriod = sharedPref.getInt(context.getString(R.string.GracePeriodPref), 60); diff --git a/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/CancelGraceReceiver.java b/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/CancelGraceReceiver.java index bd486b2..5f23424 100644 --- a/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/CancelGraceReceiver.java +++ b/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/CancelGraceReceiver.java @@ -12,10 +12,6 @@ import android.widget.Toast; public class CancelGraceReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - // Cancel notification if it's not already cancelled. - NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - nm.cancel(AlarmNotify.notifyID); - AlarmManager graceManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Intent graceIntent = new Intent(context, GraceReceiver.class); PendingIntent gracePendingIntent = PendingIntent.getBroadcast(context, MainActivity.GRACE_REQUEST, graceIntent, 0); diff --git a/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/MainActivity.java b/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/MainActivity.java index 8789a5c..cefa5b1 100644 --- a/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/MainActivity.java +++ b/HypoAlarm/src/main/java/za/org/treehouse/hypoalarm/MainActivity.java @@ -3,7 +3,6 @@ package za.org.treehouse.hypoalarm; import android.app.AlarmManager; import android.app.AlertDialog; import android.app.Dialog; -import android.app.NotificationManager; import android.app.PendingIntent; import android.app.TimePickerDialog; import android.content.ComponentName; @@ -115,10 +114,6 @@ public class MainActivity extends ActionBarActivity { editor.commit(); if (!b) { - // Cancel notification if it's not already cancelled. - NotificationManager nm = (NotificationManager) getActivity().getSystemService(NOTIFICATION_SERVICE); - nm.cancel(AlarmNotify.notifyID); - // Cancel any current alarm alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE); Intent alarmIntent = new Intent(getActivity(), AlarmReceiver.class); @@ -275,8 +270,6 @@ public class MainActivity extends ActionBarActivity { public Dialog onCreateDialog(Bundle savedInstanceState) { sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); // Use the current set time as the default value for the picker - //String defaultTimeStr = alarmTimeButton.getText().toString(); - //String alarmTimeStr = sharedPref.getString(getString(R.string.AlarmTimePref), defaultTimeStr); String alarmTimeStr = alarmTimeButton.getText().toString(); Calendar cal = TimeStringToCalendar(alarmTimeStr); int hour = cal.get(Calendar.HOUR_OF_DAY); diff --git a/HypoAlarm/src/main/res/drawable-hdpi/ic_grayscale.png b/HypoAlarm/src/main/res/drawable-hdpi/ic_launcher_grey.png similarity index 100% rename from HypoAlarm/src/main/res/drawable-hdpi/ic_grayscale.png rename to HypoAlarm/src/main/res/drawable-hdpi/ic_launcher_grey.png diff --git a/HypoAlarm/src/main/res/drawable-mdpi/ic_grayscale.png b/HypoAlarm/src/main/res/drawable-mdpi/ic_launcher_grey.png similarity index 100% rename from HypoAlarm/src/main/res/drawable-mdpi/ic_grayscale.png rename to HypoAlarm/src/main/res/drawable-mdpi/ic_launcher_grey.png diff --git a/HypoAlarm/src/main/res/drawable-xhdpi/ic_grayscale.png b/HypoAlarm/src/main/res/drawable-xhdpi/ic_launcher_grey.png similarity index 100% rename from HypoAlarm/src/main/res/drawable-xhdpi/ic_grayscale.png rename to HypoAlarm/src/main/res/drawable-xhdpi/ic_launcher_grey.png diff --git a/HypoAlarm/src/main/res/drawable-xxhdpi/ic_grayscale.png b/HypoAlarm/src/main/res/drawable-xxhdpi/ic_grayscale.png deleted file mode 100644 index 12a2c1b7703887fedd7cef7e360e1b2ee2e8b7f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31442 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