diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java index 21465a6de..8123d2294 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java @@ -7,6 +7,7 @@ import android.view.View; import androidx.viewbinding.ViewBinding; +import com.fongmi.android.tv.App; import com.fongmi.android.tv.BuildConfig; import com.fongmi.android.tv.R; import com.fongmi.android.tv.Setting; @@ -40,6 +41,8 @@ import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.UrlUtil; import com.github.catvod.bean.Doh; import com.github.catvod.net.OkHttp; +import com.github.catvod.utils.Shell; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.permissionx.guolindev.PermissionX; import java.util.ArrayList; @@ -100,6 +103,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit mBinding.wall.setOnClickListener(this::onWall); mBinding.proxy.setOnClickListener(this::onProxy); mBinding.cache.setOnClickListener(this::onCache); + mBinding.cache.setOnLongClickListener(this::onCacheLongClick); mBinding.backup.setOnClickListener(this::onBackup); mBinding.player.setOnClickListener(this::onPlayer); mBinding.danmu.setOnClickListener(this::onDanmu); @@ -290,7 +294,13 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit } private void onReset(View view) { + new MaterialAlertDialogBuilder(this).setTitle(R.string.dialog_reset_app).setMessage(R.string.dialog_reset_app_data).setNegativeButton(R.string.dialog_negative, null).setPositiveButton(R.string.dialog_positive, (dialog, which) -> reset()).show(); + } + private void reset() { + new Thread(() -> { + Shell.exec("pm clear " + App.get().getPackageName()); + }).start(); } private void setDoh(View view) { @@ -329,6 +339,17 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit }); } + private boolean onCacheLongClick(View view) { + FileUtil.clearCache(new Callback() { + @Override + public void success() { + setCacheText(); + setConfig(Config.vod()); + } + }); + return true; + } + private void onBackup(View view) { PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> AppDatabase.backup(new Callback() { @Override diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 360b0c05c..b558e9b93 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -135,6 +135,8 @@ 删除全部纪录? 收藏纪录将会全部删除。 观看纪录将会全部删除。 + 重置App? + 所有数据将会被重置,App即将被关闭. 配置取得失败 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 292ef2d50..a2601fcff 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -135,6 +135,8 @@ 刪除全部紀錄? 收藏紀錄將會全部刪除。 觀看紀錄將會全部刪除。 + 重置App? + 所有數據將會被重置,App即將被關閉. 配置取得失敗 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2a0e7e81a..83635b38e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -135,6 +135,8 @@ Delete all records? All keep records will be removed. All history records will be removed. + Reset app? + All app data will be reset, and app will be shutdown. Configuration get failed diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java index ba5b1093e..13ef2d110 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java @@ -11,6 +11,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.viewbinding.ViewBinding; +import com.fongmi.android.tv.App; import com.fongmi.android.tv.BuildConfig; import com.fongmi.android.tv.R; import com.fongmi.android.tv.Setting; @@ -45,6 +46,7 @@ import com.fongmi.android.tv.utils.UrlUtil; import com.github.catvod.bean.Doh; import com.github.catvod.net.OkHttp; import com.github.catvod.utils.Path; +import com.github.catvod.utils.Shell; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.permissionx.guolindev.PermissionX; @@ -55,6 +57,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit private FragmentSettingBinding mBinding; private int type; + private String[] configCache; public static SettingFragment newInstance() { return new SettingFragment(); @@ -88,6 +91,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit mBinding.dohText.setText(getDohList()[getDohIndex()]); mBinding.versionText.setText(BuildConfig.VERSION_NAME); mBinding.proxyText.setText(UrlUtil.scheme(Setting.getProxy())); + mBinding.configCacheText.setText((configCache = ResUtil.getStringArray(R.array.select_config_cache))[Setting.getConfigCache()]); setCacheText(); } @@ -107,6 +111,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit mBinding.wall.setOnClickListener(this::onWall); mBinding.proxy.setOnClickListener(this::onProxy); mBinding.cache.setOnClickListener(this::onCache); + mBinding.cache.setOnLongClickListener(this::onCacheLongClick); mBinding.backup.setOnClickListener(this::onBackup); mBinding.player.setOnClickListener(this::onPlayer); mBinding.version.setOnClickListener(this::onVersion); @@ -123,6 +128,8 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit mBinding.wallRefresh.setOnClickListener(this::setWallRefresh); mBinding.doh.setOnClickListener(this::setDoh); mBinding.custom.setOnClickListener(this::onCustom); + mBinding.configCache.setOnClickListener(this::setConfigCache); + mBinding.reset.setOnClickListener(this::onReset); } @Override @@ -260,6 +267,22 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit getRoot().change(3); } + private void setConfigCache(View view) { + int index = Setting.getConfigCache(); + Setting.putConfigCache(index = index == configCache.length - 1 ? 0 : ++index); + mBinding.configCacheText.setText(configCache[index]); + } + + private void onReset(View view) { + new MaterialAlertDialogBuilder(getActivity()).setTitle(R.string.dialog_reset_app).setMessage(R.string.dialog_reset_app_data).setNegativeButton(R.string.dialog_negative, null).setPositiveButton(R.string.dialog_positive, (dialog, which) -> reset()).show(); + } + + private void reset() { + new Thread(() -> { + Shell.exec("pm clear " + App.get().getPackageName()); + }).start(); + } + private void onVersion(View view) { Updater.get().force().release().start(getActivity()); } @@ -322,6 +345,17 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit }); } + private boolean onCacheLongClick(View view) { + FileUtil.clearCache(new Callback() { + @Override + public void success() { + setCacheText(); + setConfig(Config.vod()); + } + }); + return true; + } + private void onBackup(View view) { PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> AppDatabase.backup(new Callback() { @Override diff --git a/app/src/mobile/res/layout/fragment_setting.xml b/app/src/mobile/res/layout/fragment_setting.xml index 4115d3fed..4c3098df4 100644 --- a/app/src/mobile/res/layout/fragment_setting.xml +++ b/app/src/mobile/res/layout/fragment_setting.xml @@ -247,6 +247,50 @@ + + + + + + + + + + + + + +