diff --git a/app/src/main/java/com/emanuelef/remote_capture/MitmAddon.java b/app/src/main/java/com/emanuelef/remote_capture/MitmAddon.java
index 0cde76d0..1afe1c3c 100644
--- a/app/src/main/java/com/emanuelef/remote_capture/MitmAddon.java
+++ b/app/src/main/java/com/emanuelef/remote_capture/MitmAddon.java
@@ -24,6 +24,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
+import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
@@ -47,6 +48,8 @@ import java.lang.ref.WeakReference;
public class MitmAddon {
/* API */
public static final String PACKAGE_NAME = "com.pcapdroid.mitm";
+ public static final String PACKAGE_VERSION_NAME = "v0.2";
+ public static final int PACKAGE_VERSION_CODE = 2;
public static final String MITM_PERMISSION = "com.pcapdroid.permission.MITM";
public static final String MITM_SERVICE = PACKAGE_NAME + ".MitmService";
@@ -82,15 +85,24 @@ public class MitmAddon {
}
};
- public static boolean isInstalled(Context ctx) {
+ public static int getInstalledVersion(Context ctx) {
try {
- ctx.getPackageManager().getPackageInfo(PACKAGE_NAME, 0);
- return true;
+ PackageInfo pInfo = ctx.getPackageManager().getPackageInfo(PACKAGE_NAME, 0);
+ return pInfo.versionCode;
} catch (PackageManager.NameNotFoundException e) {
- return false;
+ return -1;
}
}
+ public static boolean isInstalled(Context ctx) {
+ return getInstalledVersion(ctx) == PACKAGE_VERSION_CODE;
+ }
+
+ public static String getGithubReleaseUrl() {
+ return "https://github.com/emanuele-f/PCAPdroid-mitm/releases/download/" +
+ PACKAGE_VERSION_NAME + "/PCAPdroid-mitm_" + PACKAGE_VERSION_NAME +".apk";
+ }
+
public static boolean hasMitmPermission(Context ctx) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
return ctx.checkSelfPermission(MitmAddon.MITM_PERMISSION) == PackageManager.PERMISSION_GRANTED;
diff --git a/app/src/main/java/com/emanuelef/remote_capture/fragments/mitmwizard/InstallAddon.java b/app/src/main/java/com/emanuelef/remote_capture/fragments/mitmwizard/InstallAddon.java
index f1a7462a..b164515c 100644
--- a/app/src/main/java/com/emanuelef/remote_capture/fragments/mitmwizard/InstallAddon.java
+++ b/app/src/main/java/com/emanuelef/remote_capture/fragments/mitmwizard/InstallAddon.java
@@ -56,11 +56,25 @@ public class InstallAddon extends StepFragment {
}
private void installAddon() {
- mStepLabel.setText(R.string.install_mitm_addon);
- mStepButton.setText(R.string.install_action);
+ int installed_ver = MitmAddon.getInstalledVersion(requireContext());
+
+ if(installed_ver < 0) {
+ mStepLabel.setText(R.string.install_mitm_addon);
+ mStepButton.setText(R.string.install_action);
+ } else if(installed_ver < MitmAddon.PACKAGE_VERSION_CODE) {
+ mStepLabel.setText(R.string.mitm_addon_new_version);
+ mStepButton.setText(R.string.upgrade_action);
+ } else {
+ mStepLabel.setText(R.string.mitm_addon_bad_version);
+ mStepIcon.setColorFilter(mDangerColor);
+ mStepButton.setText(R.string.install_action);
+ mStepButton.setEnabled(false);
+ return;
+ }
+
mStepButton.setOnClickListener(v -> {
Intent browserIntent = new Intent(Intent.ACTION_VIEW,
- Uri.parse("https://github.com/emanuele-f/PCAPdroid-mitm/releases/download/v0.1/PCAPdroid-mitm_v0.1.apk"));
+ Uri.parse(MitmAddon.getGithubReleaseUrl()));
Utils.startActivity(requireContext(), browserIntent);
});
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c52eb04e..279beff9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -282,4 +282,7 @@
The CA certificate is installed
The CA certificate is not installed, run the mitm setup wizard
Done
+ Bad PCAPdroid mitm addon version. Uninstall it and retry
+ The PCAPdroid plugin must be upgraded
+ Upgrade
\ No newline at end of file