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