From a29d08a4eb8ea0abcd0367ee07c2f78ab3eea206 Mon Sep 17 00:00:00 2001 From: tehcneko <88844448+tehcneko@users.noreply.github.com> Date: Fri, 10 Sep 2021 19:44:11 +0800 Subject: [PATCH] [app] Fix a crash (#1097) --- .../manager/ui/activity/MainActivity.java | 39 +++++++++++-------- .../manager/ui/fragment/AppListFragment.java | 4 +- .../manager/util/NotificationUtil.java | 6 ++- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/org/lsposed/manager/ui/activity/MainActivity.java b/app/src/main/java/org/lsposed/manager/ui/activity/MainActivity.java index a361785d..99b11b5f 100644 --- a/app/src/main/java/org/lsposed/manager/ui/activity/MainActivity.java +++ b/app/src/main/java/org/lsposed/manager/ui/activity/MainActivity.java @@ -39,6 +39,7 @@ import org.lsposed.manager.NavGraphDirections; import org.lsposed.manager.R; import org.lsposed.manager.databinding.ActivityMainBinding; import org.lsposed.manager.ui.activity.base.BaseActivity; +import org.lsposed.manager.util.NotificationUtil; public class MainActivity extends BaseActivity { private static final String KEY_PREFIX = MainActivity.class.getName() + '.'; @@ -98,24 +99,30 @@ public class MainActivity extends BaseActivity { } if (intent.getAction() != null && intent.getAction().equals("android.intent.action.APPLICATION_PREFERENCES")) { navController.navigate(R.id.action_settings_fragment); - } else if (intent.hasExtra("modulePackageName") && ConfigManager.isBinderAlive()) { - navController.navigate(NavGraphDirections.actionAppListFragment(intent.getStringExtra("modulePackageName"), intent.getIntExtra("moduleUserId", -1))); - } else if (!TextUtils.isEmpty(intent.getDataString())) { - switch (intent.getDataString()) { - case "modules": - if (!ConfigManager.isBinderAlive()) break; - navController.navigate(R.id.action_modules_fragment); - break; - case "logs": - if (!ConfigManager.isBinderAlive()) break; - navController.navigate(R.id.action_logs_fragment); - break; - case "repo": - if (!ConfigManager.isBinderAlive() && !ConfigManager.isMagiskInstalled()) break; - navController.navigate(R.id.action_repo_fragment); - break; + } else if (ConfigManager.isBinderAlive()) { + if (NotificationUtil.NOTIFICATION_UUID.equals(intent.getStringExtra("uuid"))) { + navController.navigate( + NavGraphDirections.actionAppListFragment( + intent.getStringExtra("modulePackageName"), + intent.getIntExtra("moduleUserId", -1)) + ); + } else if (!TextUtils.isEmpty(intent.getDataString())) { + switch (intent.getDataString()) { + case "modules": + navController.navigate(R.id.action_modules_fragment); + break; + case "logs": + navController.navigate(R.id.action_logs_fragment); + break; + case "repo": + if (ConfigManager.isMagiskInstalled()) { + navController.navigate(R.id.action_repo_fragment); + } + break; + } } } + } @Override diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/AppListFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/AppListFragment.java index 4b8b8328..05636acc 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/AppListFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/AppListFragment.java @@ -150,12 +150,12 @@ public class AppListFragment extends BaseFragment { @Override public void onResume() { super.onResume(); - scopeAdapter.refresh(); + if (scopeAdapter != null) scopeAdapter.refresh(); } @Override public void onDestroy() { - scopeAdapter.onDestroy(); + if (scopeAdapter != null) scopeAdapter.onDestroy(); super.onDestroy(); } diff --git a/app/src/main/java/org/lsposed/manager/util/NotificationUtil.java b/app/src/main/java/org/lsposed/manager/util/NotificationUtil.java index 151a5c4d..81736f34 100644 --- a/app/src/main/java/org/lsposed/manager/util/NotificationUtil.java +++ b/app/src/main/java/org/lsposed/manager/util/NotificationUtil.java @@ -31,9 +31,12 @@ import androidx.core.app.NotificationCompat; import org.lsposed.manager.R; import org.lsposed.manager.ui.activity.MainActivity; +import java.util.UUID; + public final class NotificationUtil { - public static final int NOTIFICATION_MODULE_NOT_ACTIVATED_YET = 0; + public static final String NOTIFICATION_UUID = UUID.randomUUID().toString(); + private static final int NOTIFICATION_MODULE_NOT_ACTIVATED_YET = 0; private static final int NOTIFICATION_MODULES_UPDATED = 1; private static final int PENDING_INTENT_OPEN_APP_LIST = 0; private static final String NOTIFICATION_MODULES_CHANNEL = "modules_channel_2"; @@ -63,6 +66,7 @@ public final class NotificationUtil { R.string.module_is_not_activated_yet_detailed, moduleName); Intent intent = new Intent(context, MainActivity.class) + .putExtra("uuid", NOTIFICATION_UUID) .putExtra("modulePackageName", modulePackageName) .putExtra("moduleUserId", moduleUserId) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);