mirror of
https://github.com/MaintainTeam/Hypatia.git
synced 2025-03-01 05:48:23 +03:00
Add proper toggle for service
This commit is contained in:
parent
c1473846a6
commit
90e5ecdede
5 changed files with 35 additions and 17 deletions
|
@ -6,7 +6,7 @@ android {
|
||||||
applicationId "us.spotco.malwarescanner"
|
applicationId "us.spotco.malwarescanner"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 26
|
targetSdkVersion 26
|
||||||
versionCode 7
|
versionCode 8
|
||||||
versionName "1.3" }
|
versionName "1.3" }
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package us.spotco.malwarescanner;
|
package us.spotco.malwarescanner;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
|
import android.app.ActivityManager;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
@ -11,12 +13,15 @@ import android.support.design.widget.FloatingActionButton;
|
||||||
import android.support.v4.app.ActivityCompat;
|
import android.support.v4.app.ActivityCompat;
|
||||||
import android.support.v4.content.ContextCompat;
|
import android.support.v4.content.ContextCompat;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
|
import android.support.v7.widget.SwitchCompat;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
import android.text.method.ScrollingMovementMethod;
|
import android.text.method.ScrollingMovementMethod;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
import android.widget.CompoundButton;
|
||||||
|
import android.widget.Switch;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
@ -84,6 +89,7 @@ public class MainActivity extends AppCompatActivity {
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.menu_main, menu);
|
getMenuInflater().inflate(R.menu.menu_main, menu);
|
||||||
|
menu.findItem(R.id.toggleRealtime).setChecked(isServiceRunning(MalwareScannerService.class));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,9 +108,14 @@ public class MainActivity extends AppCompatActivity {
|
||||||
Database.loadDatabase(false, Database.signatureDatabases);
|
Database.loadDatabase(false, Database.signatureDatabases);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case R.id.mnuStartRealtime:
|
case R.id.toggleRealtime:
|
||||||
Intent realtimeScanner = new Intent(this, MalwareScannerService.class);
|
Intent realtimeScanner = new Intent(getApplicationContext(), MalwareScannerService.class);
|
||||||
startService(realtimeScanner);
|
if(!item.isChecked()) {
|
||||||
|
startService(realtimeScanner);
|
||||||
|
} else {
|
||||||
|
stopService(realtimeScanner);
|
||||||
|
}
|
||||||
|
item.setChecked(!item.isChecked());
|
||||||
break;
|
break;
|
||||||
case R.id.mnuScanSystem:
|
case R.id.mnuScanSystem:
|
||||||
scanSystem = !item.isChecked();
|
scanSystem = !item.isChecked();
|
||||||
|
@ -125,4 +136,15 @@ public class MainActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private boolean isServiceRunning(Class<?> serviceClass) {
|
||||||
|
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
|
||||||
|
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
|
||||||
|
if (serviceClass.getName().equals(service.service.getClassName())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,6 @@ public class MalwareScannerService extends Service {
|
||||||
if (true) {//Check if we're enabled
|
if (true) {//Check if we're enabled
|
||||||
malwareMonitors = new ArrayList<>();
|
malwareMonitors = new ArrayList<>();
|
||||||
malwareMonitors.add(new MalwareMonitor(Environment.getExternalStorageDirectory().toString()));
|
malwareMonitors.add(new MalwareMonitor(Environment.getExternalStorageDirectory().toString()));
|
||||||
malwareMonitors.add(new MalwareMonitor(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString()));
|
|
||||||
|
|
||||||
for (MalwareMonitor malwareMonitor : malwareMonitors) {
|
for (MalwareMonitor malwareMonitor : malwareMonitors) {
|
||||||
malwareMonitor.startWatching();
|
malwareMonitor.startWatching();
|
||||||
|
@ -69,7 +68,6 @@ public class MalwareScannerService extends Service {
|
||||||
private class MalwareMonitor extends FileObserver {
|
private class MalwareMonitor extends FileObserver {
|
||||||
|
|
||||||
private String rootPath = null;
|
private String rootPath = null;
|
||||||
private Set<File> filesScannedRecently = new HashSet<>();
|
|
||||||
|
|
||||||
public MalwareMonitor(String path) {
|
public MalwareMonitor(String path) {
|
||||||
super(path);
|
super(path);
|
||||||
|
@ -83,14 +81,10 @@ public class MalwareScannerService extends Service {
|
||||||
public void onEvent(int eventID, String path) {
|
public void onEvent(int eventID, String path) {
|
||||||
if (eventID == FileObserver.CLOSE_WRITE) {
|
if (eventID == FileObserver.CLOSE_WRITE) {
|
||||||
File file = new File(rootPath + path);
|
File file = new File(rootPath + path);
|
||||||
if (!filesScannedRecently.contains(file)) {
|
if (file.exists() && file.length() > 0) {
|
||||||
filesScannedRecently.clear();
|
Set<File> filesToScan = new HashSet<>();
|
||||||
if (file.exists() && file.length() > 0) {
|
filesToScan.add(file);
|
||||||
Set<File> filesToScan = new HashSet<>();
|
new MalwareScanner(null, getApplicationContext(), false).execute(filesToScan);
|
||||||
filesToScan.add(file);
|
|
||||||
filesScannedRecently.add(file);
|
|
||||||
new MalwareScanner(null, getApplicationContext(), false).execute(filesToScan);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
tools:context="us.spotco.malwarescanner.MainActivity">
|
tools:context="us.spotco.malwarescanner.MainActivity">
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/mnuUpdateDatabase"
|
android:id="@+id/mnuUpdateDatabase"
|
||||||
android:title="@string/lblUpdateDatabase" />
|
android:title="@string/lblUpdateDatabase" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/mnuStartRealtime"
|
android:id="@+id/toggleRealtime"
|
||||||
android:title="@string/lblStartRealtime" />
|
android:title="@string/lblRealtimeScannerToggle"
|
||||||
|
android:checkable="true" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/mnuScanSystem"
|
android:id="@+id/mnuScanSystem"
|
||||||
|
|
|
@ -9,4 +9,5 @@
|
||||||
<string name="lblNotificationRealtimeTitle">Realtime Scanner</string>
|
<string name="lblNotificationRealtimeTitle">Realtime Scanner</string>
|
||||||
<string name="lblNotificationRealtimeText">Malware will be detected in realtime</string>
|
<string name="lblNotificationRealtimeText">Malware will be detected in realtime</string>
|
||||||
<string name="lblNotificationRealtimeDetection">Malware Detected!</string>
|
<string name="lblNotificationRealtimeDetection">Malware Detected!</string>
|
||||||
|
<string name="lblRealtimeScannerToggle">Realtime Scanner</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Add table
Reference in a new issue