More work

This commit is contained in:
Tad 2017-12-14 01:24:21 -05:00
parent a8df8fe3c1
commit 20cadea983
4 changed files with 25 additions and 9 deletions

View file

@ -3,6 +3,7 @@
package="us.spotco.veritas"> package="us.spotco.veritas">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application <application
android:allowBackup="true" android:allowBackup="true"

View file

@ -12,10 +12,11 @@ import android.widget.TextView;
public class MainActivity extends AppCompatActivity { public class MainActivity extends AppCompatActivity {
private boolean checkUpdates = true;
private boolean scanSystem = true; private boolean scanSystem = true;
private boolean scanApps = true; private boolean scanApps = true;
private boolean scanInternal = true; private boolean scanInternal = true;
private boolean scanExternal = true; private boolean scanExternal = false;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -58,17 +59,25 @@ public class MainActivity extends AppCompatActivity {
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.mnuUpdateDatabase:
checkUpdates = !item.isChecked();
item.setChecked(checkUpdates);
break;
case R.id.mnuScanSystem: case R.id.mnuScanSystem:
scanSystem = !item.isChecked(); scanSystem = !item.isChecked();
item.setChecked(scanSystem);
break; break;
case R.id.mnuScanApps: case R.id.mnuScanApps:
scanApps = !item.isChecked(); scanApps = !item.isChecked();
item.setChecked(scanApps);
break; break;
case R.id.mnuScanInternal: case R.id.mnuScanInternal:
scanInternal = !item.isChecked(); scanInternal = !item.isChecked();
item.setChecked(scanInternal);
break; break;
case R.id.mnuScanExternal: case R.id.mnuScanExternal:
scanExternal = !item.isChecked(); scanExternal = !item.isChecked();
item.setChecked(scanExternal);
break; break;
} }
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);

View file

@ -1,6 +1,8 @@
package us.spotco.veritas; package us.spotco.veritas;
import android.content.Context; import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Environment; import android.os.Environment;
import android.widget.TextView; import android.widget.TextView;
@ -11,6 +13,8 @@ import com.google.common.io.Files;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
public class MalwareScanner { public class MalwareScanner {
@ -62,19 +66,21 @@ public class MalwareScanner {
boolean scanInternal = booleans[2]; boolean scanInternal = booleans[2];
boolean scanExternal = booleans[3]; boolean scanExternal = booleans[3];
ArrayList<File> filesToScan = new ArrayList<File>(); Set<File> filesToScan = new HashSet<>();
if (scanSystem) { if (scanSystem) {
filesToScan.addAll(getFilesRecursive(Environment.getRootDirectory())); filesToScan.addAll(getFilesRecursive(Environment.getRootDirectory()));
} }
if (scanApps) { if (scanApps) {
//TODO for(ApplicationInfo packageInfo : context.getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA)) {
filesToScan.add(new File(packageInfo.sourceDir));
}
} }
if (scanInternal) { if (scanInternal) {
filesToScan.addAll(getFilesRecursive(Environment.getExternalStorageDirectory())); filesToScan.addAll(getFilesRecursive(Environment.getExternalStorageDirectory()));
} }
if (scanExternal && Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { if (scanExternal) {
//TODO filesToScan.addAll(getFilesRecursive(new File("/storage")));
} }
publishProgress(filesToScan.size() + " files pending scan"); publishProgress(filesToScan.size() + " files pending scan");
@ -95,14 +101,14 @@ public class MalwareScanner {
} }
private ArrayList<File> getFilesRecursive(File root) { private Set<File> getFilesRecursive(File root) {
ArrayList<File> filesAll = new ArrayList<File>(); Set<File> filesAll = new HashSet<>();
File[] files = root.listFiles(); File[] files = root.listFiles();
if (files != null && files.length > 0) { if (files != null && files.length > 0) {
for (File f : files) { for (File f : files) {
if (f.isDirectory()) { if (f.isDirectory()) {
ArrayList<File> filesTmp = getFilesRecursive(f); Set<File> filesTmp = getFilesRecursive(f);
if (filesTmp != null) { if (filesTmp != null) {
filesAll.addAll(filesTmp); filesAll.addAll(filesTmp);
} }

View file

@ -27,6 +27,6 @@
android:id="@+id/mnuScanExternal" android:id="@+id/mnuScanExternal"
android:title="@string/lblScanExternal" android:title="@string/lblScanExternal"
android:checkable="true" android:checkable="true"
android:checked="true" /> android:checked="false" />
</menu> </menu>