mirror of
https://github.com/revanced/revanced-patches
synced 2025-02-23 05:11:10 +01:00
241 lines
11 KiB
Java
241 lines
11 KiB
Java
package app.revanced.tiktok.settingsmenu;
|
|
|
|
import android.app.Activity;
|
|
import android.app.AlarmManager;
|
|
import android.app.AlertDialog;
|
|
import android.app.PendingIntent;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.SharedPreferences;
|
|
import android.os.Bundle;
|
|
import android.os.Environment;
|
|
import android.os.Process;
|
|
import android.preference.EditTextPreference;
|
|
import android.preference.PreferenceCategory;
|
|
import android.preference.PreferenceFragment;
|
|
import android.preference.PreferenceScreen;
|
|
import android.preference.SwitchPreference;
|
|
|
|
import androidx.annotation.Nullable;
|
|
|
|
import com.ss.android.ugc.aweme.splash.SplashActivity;
|
|
|
|
import app.revanced.tiktok.settings.SettingsEnum;
|
|
import app.revanced.tiktok.settingsmenu.preference.DownloadPathPreference;
|
|
import app.revanced.tiktok.utils.ReVancedUtils;
|
|
import app.revanced.tiktok.utils.SharedPrefHelper;
|
|
|
|
public class ReVancedSettingsFragment extends PreferenceFragment {
|
|
|
|
private boolean Registered = false;
|
|
private boolean settingsInitialized = false;
|
|
|
|
SharedPreferences.OnSharedPreferenceChangeListener listener = (sharedPreferences, str) -> {
|
|
for (SettingsEnum setting : SettingsEnum.values()) {
|
|
if (!setting.getPath().equals(str)) continue;
|
|
|
|
if (ReVancedUtils.getAppContext() != null && this.settingsInitialized && setting.shouldRebootOnChange()) {
|
|
rebootDialog(getActivity());
|
|
}
|
|
}
|
|
};
|
|
|
|
@Override
|
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
getPreferenceManager().setSharedPreferencesName(SharedPrefHelper.SharedPrefNames.TIKTOK_PREFS.getName());
|
|
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this.listener);
|
|
this.Registered = true;
|
|
|
|
final Activity context = this.getActivity();
|
|
PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(context);
|
|
setPreferenceScreen(preferenceScreen);
|
|
|
|
//Feed filter
|
|
if (SettingsStatus.feedFilter) {
|
|
PreferenceCategory feedFilter = new PreferenceCategory(context);
|
|
feedFilter.setTitle("Feed filter");
|
|
preferenceScreen.addPreference(feedFilter);
|
|
|
|
//Remove ads toggle
|
|
{
|
|
SwitchPreference preference = new SwitchPreference(context);
|
|
feedFilter.addPreference(preference);
|
|
preference.setKey(SettingsEnum.TIK_REMOVE_ADS.getPath());
|
|
preference.setDefaultValue(SettingsEnum.TIK_REMOVE_ADS.getDefaultValue());
|
|
preference.setChecked(SettingsEnum.TIK_REMOVE_ADS.getBoolean());
|
|
preference.setTitle("Remove feed ads");
|
|
preference.setSummary("Remove ads from feed.");
|
|
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
|
final boolean value = (Boolean) newValue;
|
|
SettingsEnum.TIK_REMOVE_ADS.saveValue(value);
|
|
return true;
|
|
});
|
|
}
|
|
//Hide LiveStreams toggle
|
|
{
|
|
SwitchPreference preference = new SwitchPreference(context);
|
|
feedFilter.addPreference(preference);
|
|
preference.setKey(SettingsEnum.TIK_HIDE_LIVE.getPath());
|
|
preference.setDefaultValue(SettingsEnum.TIK_HIDE_LIVE.getDefaultValue());
|
|
preference.setChecked(SettingsEnum.TIK_HIDE_LIVE.getBoolean());
|
|
preference.setTitle("Hide livestreams");
|
|
preference.setSummary("Hide livestreams from feed.");
|
|
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
|
final boolean value = (Boolean) newValue;
|
|
SettingsEnum.TIK_HIDE_LIVE.saveValue(value);
|
|
return true;
|
|
});
|
|
}
|
|
}
|
|
|
|
//Download
|
|
if (SettingsStatus.download) {
|
|
PreferenceCategory download = new PreferenceCategory(context);
|
|
download.setTitle("Download");
|
|
preferenceScreen.addPreference(download);
|
|
//Download path
|
|
{
|
|
DownloadPathPreference preference = new DownloadPathPreference(context);
|
|
download.addPreference(preference);
|
|
preference.setKey(SettingsEnum.TIK_DOWN_PATH.getPath());
|
|
preference.setDefaultValue(SettingsEnum.TIK_DOWN_PATH.getDefaultValue());
|
|
preference.setValue(SettingsEnum.TIK_DOWN_PATH.getString());
|
|
preference.setTitle("Download path");
|
|
preference.setSummary(Environment.getExternalStorageDirectory().getPath() + "/" + preference.getValue());
|
|
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
|
final String value = (String) newValue;
|
|
SettingsEnum.TIK_DOWN_PATH.saveValue(value);
|
|
return true;
|
|
});
|
|
}
|
|
//Download watermark
|
|
{
|
|
SwitchPreference preference = new SwitchPreference(context);
|
|
download.addPreference(preference);
|
|
preference.setKey(SettingsEnum.TIK_DOWN_WATERMARK.getPath());
|
|
preference.setDefaultValue(SettingsEnum.TIK_DOWN_WATERMARK.getDefaultValue());
|
|
preference.setChecked(SettingsEnum.TIK_DOWN_WATERMARK.getBoolean());
|
|
preference.setTitle("Remove watermark");
|
|
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
|
final boolean value = (Boolean) newValue;
|
|
SettingsEnum.TIK_DOWN_WATERMARK.saveValue(value);
|
|
return true;
|
|
});
|
|
}
|
|
}
|
|
|
|
// SpoofSimPatch
|
|
if(SettingsStatus.simSpoof) {
|
|
PreferenceCategory simSpoof = new PreferenceCategory(context);
|
|
simSpoof.setTitle("Bypass regional restriction");
|
|
preferenceScreen.addPreference(simSpoof);
|
|
//Global Switch
|
|
{
|
|
SwitchPreference preference = new SwitchPreference(context);
|
|
simSpoof.addPreference(preference);
|
|
preference.setKey(SettingsEnum.TIK_SIMSPOOF.getPath());
|
|
preference.setDefaultValue(SettingsEnum.TIK_SIMSPOOF.getDefaultValue());
|
|
preference.setChecked(SettingsEnum.TIK_SIMSPOOF.getBoolean());
|
|
preference.setTitle("Fake sim card info");
|
|
preference.setSummary("Bypass regional restriction by fake sim card information.");
|
|
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
|
final boolean value = (Boolean) newValue;
|
|
SettingsEnum.TIK_SIMSPOOF.saveValue(value);
|
|
return true;
|
|
});
|
|
}
|
|
//Country ISO
|
|
{
|
|
EditTextPreference preference = new EditTextPreference(context);
|
|
simSpoof.addPreference(preference);
|
|
preference.setKey(SettingsEnum.TIK_SIMSPOOF_ISO.getPath());
|
|
preference.setDefaultValue(SettingsEnum.TIK_SIMSPOOF_ISO.getDefaultValue());
|
|
preference.setText(SettingsEnum.TIK_SIMSPOOF_ISO.getString());
|
|
preference.setTitle("Country ISO");
|
|
preference.setSummary("us, uk, jp, ...");
|
|
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
|
final String value = (String) newValue;
|
|
SettingsEnum.TIK_SIMSPOOF_ISO.saveValue(value);
|
|
return true;
|
|
});
|
|
}
|
|
//Operator mcc+mnc
|
|
{
|
|
EditTextPreference preference = new EditTextPreference(context);
|
|
simSpoof.addPreference(preference);
|
|
preference.setKey(SettingsEnum.TIK_SIMSPOOF_MCCMNC.getPath());
|
|
preference.setDefaultValue(SettingsEnum.TIK_SIMSPOOF_MCCMNC.getDefaultValue());
|
|
preference.setText(SettingsEnum.TIK_SIMSPOOF_MCCMNC.getString());
|
|
preference.setTitle("Operator mcc+mnc");
|
|
preference.setSummary("mcc+mnc");
|
|
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
|
final String value = (String) newValue;
|
|
SettingsEnum.TIK_SIMSPOOF_MCCMNC.saveValue(value);
|
|
return true;
|
|
});
|
|
}
|
|
//Operator name
|
|
{
|
|
EditTextPreference preference = new EditTextPreference(context);
|
|
simSpoof.addPreference(preference);
|
|
preference.setKey(SettingsEnum.TIK_SIMSPOOF_OP_NAME.getPath());
|
|
preference.setDefaultValue(SettingsEnum.TIK_SIMSPOOF_OP_NAME.getDefaultValue());
|
|
preference.setText(SettingsEnum.TIK_SIMSPOOF_OP_NAME.getString());
|
|
preference.setTitle("Operator name");
|
|
preference.setSummary("Name of the operator");
|
|
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
|
final String value = (String) newValue;
|
|
SettingsEnum.TIK_SIMSPOOF_OP_NAME.saveValue(value);
|
|
return true;
|
|
});
|
|
}
|
|
}
|
|
|
|
//Integration
|
|
PreferenceCategory integration = new PreferenceCategory(context);
|
|
integration.setTitle("Integration");
|
|
preferenceScreen.addPreference(integration);
|
|
//Enable DebugLog toggle
|
|
{
|
|
SwitchPreference preference = new SwitchPreference(context);
|
|
integration.addPreference(preference);
|
|
preference.setKey(SettingsEnum.TIK_DEBUG.getPath());
|
|
preference.setDefaultValue(SettingsEnum.TIK_DEBUG.getDefaultValue());
|
|
preference.setChecked(SettingsEnum.TIK_DEBUG.getBoolean());
|
|
preference.setTitle("Enable debug log");
|
|
preference.setSummary("Show integration debug log.");
|
|
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
|
final boolean value = (Boolean) newValue;
|
|
SettingsEnum.TIK_DEBUG.saveValue(value);
|
|
return true;
|
|
});
|
|
}
|
|
this.settingsInitialized = true;
|
|
}
|
|
|
|
@Override // android.preference.PreferenceFragment, android.app.Fragment
|
|
public void onDestroy() {
|
|
if (this.Registered) {
|
|
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this.listener);
|
|
this.Registered = false;
|
|
}
|
|
super.onDestroy();
|
|
}
|
|
|
|
private void reboot(Activity activity) {
|
|
int intent;
|
|
intent = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE;
|
|
((AlarmManager) activity.getSystemService(Context.ALARM_SERVICE)).setExact(AlarmManager.ELAPSED_REALTIME, 1500L, PendingIntent.getActivity(activity, 0, new Intent(activity, SplashActivity.class), intent));
|
|
Process.killProcess(Process.myPid());
|
|
}
|
|
|
|
private void rebootDialog(final Activity activity) {
|
|
new AlertDialog.Builder(activity).
|
|
setMessage("Refresh and restart").
|
|
setPositiveButton("RESTART", (dialog, i) -> reboot(activity))
|
|
.setNegativeButton("CANCEL", null)
|
|
.show();
|
|
}
|
|
}
|