mirror of https://github.com/M66B/NetGuard.git
Check if filtering mode can be used
This commit is contained in:
parent
6f11f5c93a
commit
7883988ed0
|
@ -84,6 +84,8 @@ like when there is no internet conncectivity yet (when starting up your device)
|
|||
or when incorrectly requiring manual approval of the VPN service again (when starting up your device).
|
||||
Unfortunately these Android bugs cannot be worked around by NetGuard.
|
||||
|
||||
Filtering mode cannot be used on [CopperheadOS](https://copperhead.co/android/).
|
||||
|
||||
NetGuard will not work or crash when the package *com.android.vpndialogs* has been removed or otherwise is unavailable.
|
||||
Removing this package is possible with root permissions only.
|
||||
|
||||
|
|
|
@ -304,12 +304,14 @@ public class ActivityPro extends AppCompatActivity {
|
|||
TextView tvDev2 = (TextView) findViewById(R.id.tvDev2);
|
||||
LinearLayout llChallenge = (LinearLayout) findViewById(R.id.llChallenge);
|
||||
|
||||
btnLog.setVisibility(IAB.isPurchased(SKU_LOG, this) ? View.GONE : View.VISIBLE);
|
||||
btnFilter.setVisibility(IAB.isPurchased(SKU_FILTER, this) ? View.GONE : View.VISIBLE);
|
||||
boolean can = Util.canFilter(this);
|
||||
|
||||
btnLog.setVisibility(IAB.isPurchased(SKU_LOG, this) ? View.GONE : (can ? View.VISIBLE : View.INVISIBLE));
|
||||
btnFilter.setVisibility(IAB.isPurchased(SKU_FILTER, this) ? View.GONE : (can ? View.VISIBLE : View.INVISIBLE));
|
||||
btnNotify.setVisibility(IAB.isPurchased(SKU_NOTIFY, this) ? View.GONE : View.VISIBLE);
|
||||
btnSpeed.setVisibility(IAB.isPurchased(SKU_SPEED, this) ? View.GONE : View.VISIBLE);
|
||||
btnTheme.setVisibility(IAB.isPurchased(SKU_THEME, this) ? View.GONE : View.VISIBLE);
|
||||
btnAll.setVisibility(IAB.isPurchased(SKU_PRO1, this) ? View.GONE : View.VISIBLE);
|
||||
btnAll.setVisibility(IAB.isPurchased(SKU_PRO1, this) ? View.GONE : (can ? View.VISIBLE : View.INVISIBLE));
|
||||
btnDev1.setVisibility(IAB.isPurchased(SKU_SUPPORT1, this) ? View.GONE : View.VISIBLE);
|
||||
btnDev2.setVisibility(IAB.isPurchased(SKU_SUPPORT2, this) ? View.GONE : View.VISIBLE);
|
||||
|
||||
|
@ -324,6 +326,6 @@ public class ActivityPro extends AppCompatActivity {
|
|||
|
||||
llChallenge.setVisibility(
|
||||
IAB.isPurchased(SKU_DONATION, this) || Util.isPlayStoreInstall(this)
|
||||
? View.GONE : View.VISIBLE);
|
||||
? View.GONE : (can ? View.VISIBLE : View.GONE));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -217,6 +217,12 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
}
|
||||
});
|
||||
|
||||
boolean can = Util.canFilter(this);
|
||||
TwoStatePreference pref_filter = (TwoStatePreference) screen.findPreference("filter");
|
||||
pref_filter.setEnabled(can);
|
||||
if (!can)
|
||||
pref_filter.setChecked(false);
|
||||
|
||||
// VPN parameters
|
||||
screen.findPreference("vpn4").setTitle(getString(R.string.setting_vpn4, prefs.getString("vpn4", "10.1.10.1")));
|
||||
screen.findPreference("vpn6").setTitle(getString(R.string.setting_vpn6, prefs.getString("vpn6", "fd00:1:fd00:1:fd00:1:fd00:1")));
|
||||
|
|
|
@ -615,6 +615,7 @@ public class AdapterRule extends RecyclerView.Adapter<AdapterRule.ViewHolder> im
|
|||
}
|
||||
});
|
||||
|
||||
cbFiltering.setEnabled(Util.canFilter(context));
|
||||
cbFiltering.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
|
||||
|
|
|
@ -67,7 +67,8 @@ public class ServiceTileFilter extends TileService implements SharedPreferences.
|
|||
|
||||
if (IAB.isPurchased(ActivityPro.SKU_FILTER, this)) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
prefs.edit().putBoolean("filter", !prefs.getBoolean("filter", false)).apply();
|
||||
if (Util.canFilter(this))
|
||||
prefs.edit().putBoolean("filter", !prefs.getBoolean("filter", false)).apply();
|
||||
ServiceSinkhole.reload("tile", this);
|
||||
} else
|
||||
startActivity(new Intent(this, ActivityPro.class));
|
||||
|
|
|
@ -44,7 +44,6 @@ import android.os.Build;
|
|||
import android.os.Bundle;
|
||||
import android.os.PowerManager;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.net.ConnectivityManagerCompat;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.telephony.SubscriptionInfo;
|
||||
|
@ -61,6 +60,7 @@ import com.google.android.gms.common.ConnectionResult;
|
|||
import com.google.android.gms.common.GoogleApiAvailability;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
|
@ -401,6 +401,21 @@ public class Util {
|
|||
return listResult;
|
||||
}
|
||||
|
||||
public static boolean canFilter(Context context) {
|
||||
File tcp = new File("/proc/net/tcp");
|
||||
File tcp6 = new File("/proc/net/tcp6");
|
||||
try {
|
||||
if (tcp.exists() && tcp.canRead())
|
||||
return true;
|
||||
} catch (SecurityException ignored) {
|
||||
}
|
||||
try {
|
||||
return (tcp6.exists() && tcp6.canRead());
|
||||
} catch (SecurityException ignored) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isDebuggable(Context context) {
|
||||
return ((context.getApplicationContext().getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue