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">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"

View file

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

View file

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

View file

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