Skip to content

Commit

Permalink
Fix uninstalled apps not removed from app filter
Browse files Browse the repository at this point in the history
Closes #417
  • Loading branch information
emanuele-f committed Mar 10, 2024
1 parent e502fe1 commit ebd5b58
Showing 1 changed file with 31 additions and 1 deletion.
32 changes: 31 additions & 1 deletion app/src/main/java/com/emanuelef/remote_capture/PCAPdroid.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;

import androidx.annotation.NonNull;
import androidx.preference.PreferenceManager;
Expand All @@ -36,6 +37,8 @@
import com.emanuelef.remote_capture.model.Prefs;

import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Set;

import cat.ereza.customactivityoncrash.config.CaocConfig;

Expand Down Expand Up @@ -116,11 +119,15 @@ public void onReceive(Context context, Intent intent) {
String packageName = intent.getData().getSchemeSpecificPart();
Log.d(TAG, "ACTION_PACKAGE_REMOVED [update=" + isUpdate + "]: " + packageName);

if(!isUpdate)
if(!isUpdate) {
checkUidMapping(packageName);
removeUninstalledAppsFromAppFilter();
}
}
}
}, filter);

removeUninstalledAppsFromAppFilter();
}

public static @NonNull PCAPdroid getInstance() {
Expand Down Expand Up @@ -195,6 +202,29 @@ private void checkUidMapping(String pkg) {
}
}

private void removeUninstalledAppsFromAppFilter() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Set<String> filter = Prefs.getAppFilter(prefs);
ArrayList<String> to_remove = new ArrayList<>();
PackageManager pm = getPackageManager();

for (String package_name: filter) {
try {
Utils.getPackageInfo(pm, package_name, 0);
} catch (PackageManager.NameNotFoundException e) {
Log.i(TAG, "Package " + package_name + " uninstalled, removing from app filter");
to_remove.add(package_name);
}
}

if (!to_remove.isEmpty()) {
filter.removeAll(to_remove);
prefs.edit()
.putStringSet(Prefs.PREF_APP_FILTER, filter)
.apply();
}
}

public MatchList getFirewallWhitelist() {
if(mFirewallWhitelist == null) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Expand Down

0 comments on commit ebd5b58

Please sign in to comment.