diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c0af492..c54d5de 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,10 +40,10 @@
-
+
diff --git a/app/src/main/java/us/spotco/malwarescanner/EventReceiver.java b/app/src/main/java/us/spotco/malwarescanner/EventReceiver.java
index 868cb35..e7748a0 100644
--- a/app/src/main/java/us/spotco/malwarescanner/EventReceiver.java
+++ b/app/src/main/java/us/spotco/malwarescanner/EventReceiver.java
@@ -4,6 +4,11 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+
+import java.io.File;
+
+import gnu.trove.set.hash.THashSet;
public class EventReceiver extends BroadcastReceiver {
@@ -12,8 +17,15 @@ public class EventReceiver extends BroadcastReceiver {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
considerStartService(context);
}
- if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED) && intent.getDataString().contains(context.getPackageName())) {
- considerStartService(context);
+ if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) {
+ if (intent.getDataString().contains(context.getPackageName())) {
+ considerStartService(context); //We've been updated, restart service
+ } else {
+ //scanApp(context, intent.getDataString());//An app was updated, scan it
+ }
+ }
+ if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) {
+ //scanApp(context, intent.getDataString());//An app was installed, scan it
}
}
@@ -29,4 +41,18 @@ public class EventReceiver extends BroadcastReceiver {
}
}
+ private static void scanApp(Context context, String appID) {
+ if (Utils.isServiceRunning(MalwareScannerService.class, context)) {
+ THashSet filesToScan = new THashSet<>();
+ try {
+ filesToScan.add(new File(context.getPackageManager().getApplicationInfo(appID, PackageManager.GET_META_DATA).sourceDir));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ if (filesToScan.size() > 0) {
+ new MalwareScanner(null, context, false).execute(filesToScan);
+ }
+ }
+ }
+
}