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"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 26
|
||||
versionCode 7
|
||||
versionCode 8
|
||||
versionName "1.3" }
|
||||
buildTypes {
|
||||
release {
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package us.spotco.malwarescanner;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.ActivityManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
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.content.ContextCompat;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.SwitchCompat;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.text.method.ScrollingMovementMethod;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.Switch;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -84,6 +89,7 @@ public class MainActivity extends AppCompatActivity {
|
|||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.menu_main, menu);
|
||||
menu.findItem(R.id.toggleRealtime).setChecked(isServiceRunning(MalwareScannerService.class));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -102,9 +108,14 @@ public class MainActivity extends AppCompatActivity {
|
|||
Database.loadDatabase(false, Database.signatureDatabases);
|
||||
}
|
||||
break;
|
||||
case R.id.mnuStartRealtime:
|
||||
Intent realtimeScanner = new Intent(this, MalwareScannerService.class);
|
||||
startService(realtimeScanner);
|
||||
case R.id.toggleRealtime:
|
||||
Intent realtimeScanner = new Intent(getApplicationContext(), MalwareScannerService.class);
|
||||
if(!item.isChecked()) {
|
||||
startService(realtimeScanner);
|
||||
} else {
|
||||
stopService(realtimeScanner);
|
||||
}
|
||||
item.setChecked(!item.isChecked());
|
||||
break;
|
||||
case R.id.mnuScanSystem:
|
||||
scanSystem = !item.isChecked();
|
||||
|
@ -125,4 +136,15 @@ public class MainActivity extends AppCompatActivity {
|
|||
}
|
||||
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
|
||||
malwareMonitors = new ArrayList<>();
|
||||
malwareMonitors.add(new MalwareMonitor(Environment.getExternalStorageDirectory().toString()));
|
||||
malwareMonitors.add(new MalwareMonitor(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).toString()));
|
||||
|
||||
for (MalwareMonitor malwareMonitor : malwareMonitors) {
|
||||
malwareMonitor.startWatching();
|
||||
|
@ -69,7 +68,6 @@ public class MalwareScannerService extends Service {
|
|||
private class MalwareMonitor extends FileObserver {
|
||||
|
||||
private String rootPath = null;
|
||||
private Set<File> filesScannedRecently = new HashSet<>();
|
||||
|
||||
public MalwareMonitor(String path) {
|
||||
super(path);
|
||||
|
@ -83,14 +81,10 @@ public class MalwareScannerService extends Service {
|
|||
public void onEvent(int eventID, String path) {
|
||||
if (eventID == FileObserver.CLOSE_WRITE) {
|
||||
File file = new File(rootPath + path);
|
||||
if (!filesScannedRecently.contains(file)) {
|
||||
filesScannedRecently.clear();
|
||||
if (file.exists() && file.length() > 0) {
|
||||
Set<File> filesToScan = new HashSet<>();
|
||||
filesToScan.add(file);
|
||||
filesScannedRecently.add(file);
|
||||
new MalwareScanner(null, getApplicationContext(), false).execute(filesToScan);
|
||||
}
|
||||
if (file.exists() && file.length() > 0) {
|
||||
Set<File> filesToScan = new HashSet<>();
|
||||
filesToScan.add(file);
|
||||
new MalwareScanner(null, getApplicationContext(), false).execute(filesToScan);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
<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"
|
||||
tools:context="us.spotco.malwarescanner.MainActivity">
|
||||
|
||||
<item
|
||||
android:id="@+id/mnuUpdateDatabase"
|
||||
android:title="@string/lblUpdateDatabase" />
|
||||
|
||||
<item
|
||||
android:id="@+id/mnuStartRealtime"
|
||||
android:title="@string/lblStartRealtime" />
|
||||
android:id="@+id/toggleRealtime"
|
||||
android:title="@string/lblRealtimeScannerToggle"
|
||||
android:checkable="true" />
|
||||
|
||||
<item
|
||||
android:id="@+id/mnuScanSystem"
|
||||
|
|
|
@ -9,4 +9,5 @@
|
|||
<string name="lblNotificationRealtimeTitle">Realtime Scanner</string>
|
||||
<string name="lblNotificationRealtimeText">Malware will be detected in realtime</string>
|
||||
<string name="lblNotificationRealtimeDetection">Malware Detected!</string>
|
||||
<string name="lblRealtimeScannerToggle">Realtime Scanner</string>
|
||||
</resources>
|
||||
|
|
Loading…
Add table
Reference in a new issue