[app] Add ShortcutDialog class (#1300)

This commit is contained in:
南宫雪珊 2021-10-17 17:42:00 +08:00 committed by GitHub
parent a9ea36574f
commit f312331e1e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 30 deletions

View File

@ -90,7 +90,6 @@ public class App extends Application {
private static App instance = null;
private static OkHttpClient okHttpClient;
private static Cache okHttpCache;
private static boolean parasiticShown = false;
private SharedPreferences pref;
private ExecutorService executorService;
@ -110,14 +109,6 @@ public class App extends Application {
return !Process.isApplicationUid(Process.myUid());
}
public static boolean isParasiticShown() {
return parasiticShown;
}
public static void setParasiticShown(boolean parasiticShown) {
App.parasiticShown = parasiticShown;
}
private void setCrashReport() {
Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> {

View File

@ -0,0 +1,38 @@
package org.lsposed.manager.ui.dialog;
import android.content.Context;
import android.os.RemoteException;
import androidx.annotation.NonNull;
import org.lsposed.manager.App;
import org.lsposed.manager.ConfigManager;
import org.lsposed.manager.R;
import org.lsposed.manager.receivers.LSPManagerServiceHolder;
public class ShortcutDialogBuilder extends BlurBehindDialogBuilder {
private static boolean shown = false;
private ShortcutDialogBuilder(@NonNull Context context) {
super(context);
setTitle(R.string.parasitic_recommend);
setMessage(R.string.parasitic_recommend_summary);
setNegativeButton(R.string.never_show, (dialog, which) ->
App.getPreferences().edit().putBoolean("never_show_shortcut", true).apply());
setNeutralButton(R.string.create_shortcut, (dialog, which) -> {
try {
LSPManagerServiceHolder.getService().createShortcut();
} catch (RemoteException ignored) {
}
});
setPositiveButton(android.R.string.ok, null);
}
public static void showIfNeed(@NonNull Context context) {
if (App.isParasitic() || !ConfigManager.isBinderAlive()) return;
if (App.getPreferences().getBoolean("never_show_shortcut", false)) return;
if (shown) return;
shown = true;
new ShortcutDialogBuilder(context).show();
}
}

View File

@ -35,16 +35,15 @@ import androidx.core.text.HtmlCompat;
import com.google.android.material.color.MaterialColors;
import com.google.android.material.snackbar.Snackbar;
import org.lsposed.manager.App;
import org.lsposed.manager.BuildConfig;
import org.lsposed.manager.ConfigManager;
import org.lsposed.manager.R;
import org.lsposed.manager.databinding.DialogAboutBinding;
import org.lsposed.manager.databinding.FragmentHomeBinding;
import org.lsposed.manager.receivers.LSPManagerServiceHolder;
import org.lsposed.manager.ui.dialog.BlurBehindDialogBuilder;
import org.lsposed.manager.ui.dialog.FlashDialogBuilder;
import org.lsposed.manager.ui.dialog.InfoDialogBuilder;
import org.lsposed.manager.ui.dialog.ShortcutDialogBuilder;
import org.lsposed.manager.ui.dialog.WarningDialogBuilder;
import org.lsposed.manager.util.ModuleUtil;
import org.lsposed.manager.util.NavUtil;
@ -62,25 +61,7 @@ public class HomeFragment extends BaseFragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!App.isParasitic() && !App.getPreferences().getBoolean("never_show_shortcut", false) && !App.isParasiticShown() && ConfigManager.isBinderAlive()) {
App.setParasiticShown(true);
new BlurBehindDialogBuilder(requireActivity())
.setTitle(R.string.parasitic_recommend)
.setMessage(R.string.parasitic_recommend_summary)
.setNegativeButton(R.string.never_show, (dialog, which) -> App.getPreferences().edit().putBoolean("never_show_shortcut", true).apply())
.setNeutralButton(R.string.create_shortcut, (dialog, which) -> {
try {
LSPManagerServiceHolder.getService().createShortcut();
} catch (Throwable e) {
if (binding != null) {
Snackbar.make(binding.snackbar, getString(R.string.failed_to_create_shortcut, e.getMessage()), Snackbar.LENGTH_LONG).show();
}
}
})
.setPositiveButton(android.R.string.ok, null)
.show();
}
ShortcutDialogBuilder.showIfNeed(requireContext());
}
@Override