diff --git a/app/build.gradle b/app/build.gradle
index 328180a..93b12ae 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -6,8 +6,8 @@ android {
applicationId "us.spotco.malwarescanner"
minSdkVersion 16
targetSdkVersion 32
- versionCode 305
- versionName "3.05"
+ versionCode 306
+ versionName "3.06"
resConfigs 'en', 'af', 'de', 'el', 'es', 'fi', 'fr', 'it', 'pl', 'pt', 'ru', 'tr', 'zh-rCN'
}
buildTypes {
diff --git a/app/src/main/java/us/spotco/malwarescanner/MainActivity.java b/app/src/main/java/us/spotco/malwarescanner/MainActivity.java
index 19f58af..eaa1ba3 100644
--- a/app/src/main/java/us/spotco/malwarescanner/MainActivity.java
+++ b/app/src/main/java/us/spotco/malwarescanner/MainActivity.java
@@ -281,7 +281,7 @@ public class MainActivity extends Activity {
item.setChecked(scanExternal);
break;
case R.id.mnuSelfTestReal:
- Utils.writeSelfTestFiles();
+ Utils.writeSelfTestFiles(this);
break;
case R.id.mnuFullCredits:
showCredits();
@@ -317,6 +317,7 @@ public class MainActivity extends Activity {
filesToScan.add(new File("/data"));
filesToScan.add(new File("/data/local/tmp"));
filesToScan.add(new File("/firmware"));
+ filesToScan.add(new File("/oem"));
filesToScan.add(new File("/odm"));
filesToScan.add(new File("/odm_dlkm"));
filesToScan.add(new File("/product"));
@@ -327,14 +328,26 @@ public class MainActivity extends Activity {
}
if (scanApps) {
for (ApplicationInfo packageInfo : getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA)) {
- filesToScan.add(new File(packageInfo.sourceDir));
- filesToScan.add(new File(packageInfo.dataDir));
- filesToScan.add(new File(packageInfo.nativeLibraryDir));
- filesToScan.add(new File(packageInfo.publicSourceDir));
+ if (packageInfo != null) {
+ if (packageInfo.sourceDir != null) {
+ filesToScan.add(new File(packageInfo.sourceDir));
+ }
+ if (packageInfo.dataDir != null) {
+ filesToScan.add(new File(packageInfo.dataDir));
+ }
+ if (packageInfo.nativeLibraryDir != null) {
+ filesToScan.add(new File(packageInfo.nativeLibraryDir));
+ }
+ if (packageInfo.publicSourceDir != null) {
+ filesToScan.add(new File(packageInfo.publicSourceDir));
+ }
+ }
}
}
if (scanInternal) {
- filesToScan.add(Environment.getExternalStorageDirectory());
+ if (Environment.getExternalStorageDirectory() != null) {
+ filesToScan.add(Environment.getExternalStorageDirectory());
+ }
}
if (scanExternal) {
File externalStorage = new File("/storage");
diff --git a/app/src/main/java/us/spotco/malwarescanner/Utils.java b/app/src/main/java/us/spotco/malwarescanner/Utils.java
index 4a15dfd..a527cc7 100644
--- a/app/src/main/java/us/spotco/malwarescanner/Utils.java
+++ b/app/src/main/java/us/spotco/malwarescanner/Utils.java
@@ -26,6 +26,7 @@ import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Environment;
+import android.widget.Toast;
import java.io.File;
import java.io.PrintWriter;
@@ -166,9 +167,9 @@ class Utils {
try (Socket s = new Socket(host, port)) {
s.close();
return true;
- } catch (Exception e) {
- return false;
+ } catch (Exception ignored) {
}
+ return false;
}
public static void waitUntilOrbotIsAvailable() {
@@ -178,7 +179,6 @@ class Utils {
try {
Thread.sleep(1000);
} catch (Exception ignored) {
-
}
}
}
@@ -203,11 +203,12 @@ class Utils {
Utils.context = context;
}
- public static void writeSelfTestFiles() {
+ public static void writeSelfTestFiles(Context context) {
int rand = new Random().nextInt();
writeStringToFile(new File(Environment.getExternalStorageDirectory() + "/Hypatia-MD5-Test-" + rand + ".txt"), "HypatiaHypatiaHypatia-MD5");
writeStringToFile(new File(Environment.getExternalStorageDirectory() + "/Hypatia-SHA1-Test-" + rand + ".txt"), "HypatiaHypatiaHypatia-SHA1");
writeStringToFile(new File(Environment.getExternalStorageDirectory() + "/Hypatia-SHA256-Test-" + rand + ".txt"), "HypatiaHypatiaHypatia-SHA256");
+ Toast.makeText(context, R.string.lblWroteTestFiles, Toast.LENGTH_SHORT).show();
}
public static void writeStringToFile(File fileOut, String s) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a237d63..39fcb79 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -75,4 +75,5 @@
Confirm download
You appear to be on a metered connection. Are you sure you want to update the databases?\nIt may download up to %s megabytes of data.
Skipping action, an update is running!
+ Wrote test files!
diff --git a/fastlane/metadata/android/en-US/changelogs/306.txt b/fastlane/metadata/android/en-US/changelogs/306.txt
new file mode 100644
index 0000000..632648c
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/306.txt
@@ -0,0 +1 @@
+* Crash fix when scanning apps in some cases
diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png
new file mode 100644
index 0000000..63c5c70
Binary files /dev/null and b/fastlane/metadata/android/en-US/images/icon.png differ