From 6d5771181f308a116f8819151c4fc1b2632c3b84 Mon Sep 17 00:00:00 2001 From: Graham Jones Date: Sun, 27 Jan 2019 21:14:07 +0000 Subject: [PATCH] Updated system so it will run without SMS permissions granted. Changed notification to warn the user if SMS alarms are enabled. Fixed notification icon background. --- .../uk/org/openseizuredetector/OsdUtil.java | 46 ++++++++++++++++-- .../org/openseizuredetector/PrefActivity.java | 13 +++++ .../uk/org/openseizuredetector/SdServer.java | 13 +++-- .../main/res/drawable/star_of_life_24x24.png | Bin 210 -> 241 bytes .../res/drawable/star_of_life_red_24x24.png | Bin 221 -> 232 bytes .../drawable/star_of_life_yellow_24x24.png | Bin 231 -> 252 bytes app/src/main/res/xml/alarm_prefs.xml | 2 +- 7 files changed, 64 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/uk/org/openseizuredetector/OsdUtil.java b/app/src/main/java/uk/org/openseizuredetector/OsdUtil.java index 36f3a69..239d3de 100644 --- a/app/src/main/java/uk/org/openseizuredetector/OsdUtil.java +++ b/app/src/main/java/uk/org/openseizuredetector/OsdUtil.java @@ -89,13 +89,16 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac private final String DATALOG = "DataLog"; private final String[] REQUIRED_PERMISSIONS = { - Manifest.permission.SEND_SMS, Manifest.permission.WRITE_EXTERNAL_STORAGE, - //Manifest.permission.SYSTEM_ALERT_WINDOW, - Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.WAKE_LOCK, }; + private final String[] SMS_PERMISSIONS = { + Manifest.permission.SEND_SMS, + Manifest.permission.ACCESS_FINE_LOCATION, + }; + + /** * Based on http://stackoverflow.com/questions/7440473/android-how-to-check-if-the-intent-service-is-still-running-or-has-stopped-running */ @@ -106,6 +109,7 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac private boolean mLogSystem = true; private boolean mLogData = true; private boolean mPermissionsRequested = false; + private boolean mSMSPermissionsRequested = false; private static int mNbound = 0; @@ -442,6 +446,21 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac return allOk; } + public boolean areSMSPermissionsOK() { + boolean allOk = true; + Log.v(TAG,"areSMSPermissionsOK()"); + for (int i = 0; i< SMS_PERMISSIONS.length; i++) { + if (ContextCompat.checkSelfPermission(mContext, SMS_PERMISSIONS[i]) + != PackageManager.PERMISSION_GRANTED) { + Log.i(TAG, SMS_PERMISSIONS[i] + " Permission Not Granted"); + allOk = false; + } + } + return allOk; + } + + + public void requestPermissions(Activity activity) { if (mPermissionsRequested) { Log.i(TAG,"requestPermissions() - request already sent - not doing anything"); @@ -458,10 +477,27 @@ public class OsdUtil implements ActivityCompat.OnRequestPermissionsResultCallbac 42); mPermissionsRequested = true; } - - } + public void requestSMSPermissions(Activity activity) { + if (mSMSPermissionsRequested) { + Log.i(TAG,"requestSMSPermissions() - request already sent - not doing anything"); + } else { + Log.i(TAG, "requestSMSPermissions() - requesting permissions"); + for (int i = 0; i < SMS_PERMISSIONS.length; i++) { + if (ActivityCompat.shouldShowRequestPermissionRationale(activity, + SMS_PERMISSIONS[i])) { + Log.i(TAG, "shouldShowRationale for permission" + SMS_PERMISSIONS[i]); + } + } + ActivityCompat.requestPermissions(activity, + SMS_PERMISSIONS, + 43); + mSMSPermissionsRequested = true; + } + } + + @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { diff --git a/app/src/main/java/uk/org/openseizuredetector/PrefActivity.java b/app/src/main/java/uk/org/openseizuredetector/PrefActivity.java index 430161c..63d8a37 100644 --- a/app/src/main/java/uk/org/openseizuredetector/PrefActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/PrefActivity.java @@ -117,6 +117,19 @@ public class PrefActivity extends PreferenceActivity implements SharedPreference @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { Log.i(TAG, "SharedPreference " + s + " Changed."); + + if (s.equals("SMSAlarm")) { + if (sharedPreferences.getBoolean("SMSAlarm",false)==true) { + if (mUtil.areSMSPermissionsOK()==false) { + Log.i(TAG,"onSharedPreferenceChanged(): SMS Alarm Enabled - Requesting Permissions"); + mUtil.requestSMSPermissions(this); + } else { + Log.i(TAG,"OnSharedPreferenceCHanged(): SMS Permissions already granted, doing nothing"); + } + } else { + Log.i(TAG,"OnSharedPreferenceChanged(): SMS Alarm disabled so do not need permissions"); + } + } mUtil.showToast("Setting " + s + " Changed - restarting server"); mPrefChanged = true; mUtil.stopServer(); diff --git a/app/src/main/java/uk/org/openseizuredetector/SdServer.java b/app/src/main/java/uk/org/openseizuredetector/SdServer.java index 7b86cb6..0af2976 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdServer.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdServer.java @@ -401,13 +401,18 @@ public class SdServer extends Service implements SdDataReceiver, SdLocationRecei PendingIntent contentIntent = PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); + String smsStr; + if (mSMSAlarm) { + smsStr = "WARNING: SMS Location Alarm Active"; + } else { + smsStr = "SMS Location Alarm Disabled"; + } mNotification = mNotificationBuilder.setContentIntent(contentIntent) .setSmallIcon(iconId) - .setColor(0xff000000) - .setTicker("OpenSeizureDetector") + .setColor(0x00ffffff) .setAutoCancel(false) - .setContentTitle("OpenSeizureDetector") - .setContentText(mSdDataSourceName + " Data Source") + .setContentTitle("OpenSeizureDetector:"+mSdDataSourceName + " Data Source") + .setContentText(smsStr) .setOnlyAlertOnce(true) .build(); diff --git a/app/src/main/res/drawable/star_of_life_24x24.png b/app/src/main/res/drawable/star_of_life_24x24.png index 1fef3d8d478cdb0baf26fdc3e3137db28ff128d0..a46afb63a1d3d3755b97c67225da9c423e7268e8 100644 GIT binary patch delta 196 zcmV;#06YKE0r3Hl85#xv007{3J@^0s00v@9M??Vs0RI60puMM)ks%;|8x;x)=Brw* z0001fNkln|f@e@Mx7e@BjdM1w*u&+%WF|0000WIYoD14F*(s`WsMv%n*=n1O-!ItVj5Y0Rzw3bL1Y`ns||W@Hs-klT7^ z(hQ(bp{I*uh{fr^JTE(~}_ewW!uksY$;5_Zv(?^zmdKI;Vst0D13BH2?qr diff --git a/app/src/main/res/drawable/star_of_life_red_24x24.png b/app/src/main/res/drawable/star_of_life_red_24x24.png index 22175c75553be4bd8e2f0b355ac3e6488088aba8..2ac66057c97b9a497bbe73cecf5d818c856cb065 100644 GIT binary patch delta 171 zcmV;c0960o0q6mc83+ad007{3J@}C!Fn{9#8x;rzL?R`=0001WNkld?W%gz$U@Vc&+{cm%sp<$q|+E8s9w4C0V0Wkuxv% z3?LQBdlIGfL8(Mfll110yRL{PrZpNzqEFkDL*UJv?45ex$go>s+U}+r;YU;WUl^J1 Zp965uATYhIhuC24y>CsgE5abghpe=5EYU)R?w#U(F;V3wB*8PyoYna9mR6kZ0`$AmXpiG zKGI0*aADb>2Mu)q O0000f6bWZfnyBoEj{T=R~k5={Gdn~B$k+D{@6s`Y(qDK4^ h_#BOdO zwb9rmMvl-l&;q51!bmM5XIdMAUDeSKL=j*XKKK`3p)N!VsNE~}QZLW}+hplnF5V-} zXggfp7MpQ|Q-~K*I@($GONroRttK5J$kC2Ub^Zq?O!^ZSzZY6rJe?mP&~|+-xBvhE M07*qoM6N<$f*E^2X#fBK diff --git a/app/src/main/res/xml/alarm_prefs.xml b/app/src/main/res/xml/alarm_prefs.xml index 348934c..9c15c30 100644 --- a/app/src/main/res/xml/alarm_prefs.xml +++ b/app/src/main/res/xml/alarm_prefs.xml @@ -48,7 +48,7 @@