diff --git a/app/build.gradle b/app/build.gradle index e268542..684ef73 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,8 +6,8 @@ android { applicationId "us.spotco.malwarescanner" minSdkVersion 16 targetSdkVersion 26 - versionCode 29 - versionName "2.4" + versionCode 30 + versionName "2.5" } buildTypes { debug { diff --git a/app/src/main/java/us/spotco/malwarescanner/MainActivity.java b/app/src/main/java/us/spotco/malwarescanner/MainActivity.java index d792133..f939b66 100644 --- a/app/src/main/java/us/spotco/malwarescanner/MainActivity.java +++ b/app/src/main/java/us/spotco/malwarescanner/MainActivity.java @@ -134,8 +134,8 @@ public class MainActivity extends AppCompatActivity { case R.id.toggleRealtime: Intent realtimeScanner = new Intent(getApplicationContext(), MalwareScannerService.class); if (!item.isChecked()) { - startService(realtimeScanner); prefs.edit().putBoolean("autostart", true).apply(); + Utils.considerStartService(this); } else { stopService(realtimeScanner); prefs.edit().putBoolean("autostart", false).apply(); diff --git a/app/src/main/java/us/spotco/malwarescanner/MalwareScannerService.java b/app/src/main/java/us/spotco/malwarescanner/MalwareScannerService.java index c460ac6..c941722 100644 --- a/app/src/main/java/us/spotco/malwarescanner/MalwareScannerService.java +++ b/app/src/main/java/us/spotco/malwarescanner/MalwareScannerService.java @@ -1,10 +1,12 @@ package us.spotco.malwarescanner; import android.app.Notification; +import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.Service; import android.content.Context; import android.content.Intent; +import android.os.Build; import android.os.Environment; import android.os.FileObserver; import android.os.IBinder; @@ -93,6 +95,16 @@ public class MalwareScannerService extends Service { .setPriority(Notification.PRIORITY_MIN) .setShowWhen(false); + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + NotificationChannel foregroundChannel = new NotificationChannel("FOREGROUND", getString(R.string.lblNotificationRealtimeTitle), NotificationManager.IMPORTANCE_LOW); + foregroundChannel.setShowBadge(false); + foregroundChannel.setDescription(getString(R.string.lblNotificationRealtimeDescription)); + notificationManager.createNotificationChannel(foregroundChannel); + foregroundNotification.setChannelId("FOREGROUND"); + //Importance seems to be getting ignored + //Users will have to manually set it to 'Low' in order to hide it from the lock screen and status bar + } + startForeground(-1, foregroundNotification.build()); } diff --git a/app/src/main/java/us/spotco/malwarescanner/Utils.java b/app/src/main/java/us/spotco/malwarescanner/Utils.java index 7bc42c6..cf81de9 100644 --- a/app/src/main/java/us/spotco/malwarescanner/Utils.java +++ b/app/src/main/java/us/spotco/malwarescanner/Utils.java @@ -4,6 +4,7 @@ import android.app.ActivityManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.os.Build; import java.io.File; import java.util.HashSet; @@ -74,7 +75,11 @@ class Utils { if (autostart) { Intent realtimeScanner = new Intent(context, MalwareScannerService.class); - context.startService(realtimeScanner); + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + context.startForegroundService(realtimeScanner); + } else { + context.startService(realtimeScanner); + } } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d1555d1..b0724bf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,7 +8,9 @@ Scan Internal Storage Scan External Storage Realtime Scanner + Used to show files scanned counter and maintain the background service Malware will be detected in realtime Malware Detected: Realtime Scanner + \ No newline at end of file