diff --git a/app/src/main/java/org/lsposed/manager/App.java b/app/src/main/java/org/lsposed/manager/App.java index 74cc2081..89c930b1 100644 --- a/app/src/main/java/org/lsposed/manager/App.java +++ b/app/src/main/java/org/lsposed/manager/App.java @@ -38,6 +38,7 @@ import androidx.preference.PreferenceManager; import com.google.gson.JsonParser; import org.lsposed.hiddenapibypass.HiddenApiBypass; +import org.lsposed.manager.receivers.LSPManagerServiceHolder; import org.lsposed.manager.repo.RepoLoader; import org.lsposed.manager.ui.activity.CrashReportActivity; import org.lsposed.manager.util.DoHDNS; @@ -112,6 +113,10 @@ public class App extends Application { return instance.executorService; } + public static boolean isParasitic() { + return !Process.isApplicationUid(Process.myUid()); + } + private void setCrashReport() { Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> { @@ -140,7 +145,7 @@ public class App extends Application { @Override public void onCreate() { super.onCreate(); - if (!BuildConfig.DEBUG && Process.isApplicationUid(Process.myUid())) { + if (!BuildConfig.DEBUG && !isParasitic()) { setCrashReport(); } diff --git a/app/src/main/java/org/lsposed/manager/Constants.java b/app/src/main/java/org/lsposed/manager/Constants.java index 7b812e33..d9f39d83 100644 --- a/app/src/main/java/org/lsposed/manager/Constants.java +++ b/app/src/main/java/org/lsposed/manager/Constants.java @@ -26,11 +26,6 @@ import android.widget.Toast; import org.lsposed.manager.receivers.LSPManagerServiceHolder; public class Constants { - - public static void showErrorToast(int type) { - Toast.makeText(App.getInstance(), R.string.app_destroyed, Toast.LENGTH_LONG).show(); - } - public static boolean setBinder(IBinder binder) { LSPManagerServiceHolder.init(binder); return LSPManagerServiceHolder.getService().asBinder().isBinderAlive(); 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 e6289618..c9f17a5e 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 @@ -27,6 +27,7 @@ import android.text.TextUtils; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.core.os.BuildCompat; @@ -34,11 +35,14 @@ import androidx.navigation.NavController; import androidx.navigation.Navigation; import androidx.navigation.fragment.NavHostFragment; +import org.lsposed.manager.App; import org.lsposed.manager.ConfigManager; import org.lsposed.manager.NavGraphDirections; import org.lsposed.manager.R; import org.lsposed.manager.databinding.ActivityMainBinding; +import org.lsposed.manager.receivers.LSPManagerServiceHolder; import org.lsposed.manager.ui.activity.base.BaseActivity; +import org.lsposed.manager.ui.dialog.BlurBehindDialogBuilder; public class MainActivity extends BaseActivity { private static final String KEY_PREFIX = MainActivity.class.getName() + '.'; @@ -70,6 +74,22 @@ public class MainActivity extends BaseActivity { if (savedInstanceState == null) { handleIntent(getIntent()); } + + if (!App.isParasitic() && !App.getPreferences().getBoolean("never_show_shortcut", false)) { + new BlurBehindDialogBuilder(this) + .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) { + Toast.makeText(this, getString(R.string.failed_to_create_shortcut, e.getMessage()), Toast.LENGTH_LONG).show(); + } + }) + .setPositiveButton(android.R.string.ok, null) + .show(); + } } @Override @@ -141,7 +161,7 @@ public class MainActivity extends BaseActivity { Bundle savedInstanceState = new Bundle(); onSaveInstanceState(savedInstanceState); finish(); - startActivity(newIntent(savedInstanceState, this)); + startActivity(newIntent(savedInstanceState, this)); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); restarting = true; } catch (Throwable e) { diff --git a/app/src/main/res/layout-sw600dp/activity_main.xml b/app/src/main/res/layout-sw600dp/activity_main.xml index 86d45934..ada82d32 100644 --- a/app/src/main/res/layout-sw600dp/activity_main.xml +++ b/app/src/main/res/layout-sw600dp/activity_main.xml @@ -25,7 +25,6 @@ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 13af2b63..fe06fbd5 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -34,5 +34,4 @@ app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:navGraph="@navigation/nav_graph" /> - diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 2f40bc08..f60de7bc 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -180,7 +180,6 @@ لا مزيد من الإصدار فشل تحميل مستودع الوحدة: %s - قد يتم تدمير هذا التطبيق، يرجى تحميل أحدث إصدار من هذا التطبيق من المصدر الرسمي. تطبيق LSPosed أحدث من الإطار. الرجاء تحديث إطار LSPosd. إطار LSPosed أحدث من التطبيق. الرجاء تحديث التطبيق من /data/adb/lspd/manager.apk يدويا. تعطل المدير diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index baf6f554..d1330b29 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -176,7 +176,6 @@ Keine Veröffentlichung mehr Fehler beim Laden der Modulrepo: %s - Diese Anwendung wurde deinstalliert. Laden Sie sie unbedingt von der offiziellen Quelle herunter. Die LSPosed-App ist neuer als das Framework. Bitte aktualisieren Sie das LSPosed-Framework. Die Version von LSPosed Manager und LSPosed Core stimmen nicht überein. Installieren Sie die entsprechende Version neu. Manager abgestürzt diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 6f13b94c..bd19e701 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -176,7 +176,6 @@ انتشار جدیدی نیست ناموفق در بارگذاری ماژول: %s - ممکن است این برنامه از بین برود ، لطفاً آخرین نسخه این برنامه را از منبع رسمی بارگیری کنید. برنامه LSPosed جدیدتر از فریمورک است. لطفاً چارچوب LSPosed را به روز کنید. چارچوب LSPosed جدیدتر از برنامه است. لطفاً برنامه را از /data/adb/lspd/manager.apk به صورت دستی به روز کنید. منیجر هنگ کرده diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 8cd74802..64f5cf2b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -176,7 +176,6 @@ Pas d\’autres versions Échec de chargement du dépôt des modules: %s - Cette application à été détruite, merci de vous assurer que vous l\’avez bien téléchargé depuis la source officielle. L\'application LSPosed est plus réçente que le sous système. Merci de mettre à jour le sous système LSPosed. Version du Gestionnaire LSPosed et du noyau LSPosed ne sont pas cohérents. Merci de réinstaller la version correspondante. Plantage du Gestionnaire diff --git a/app/src/main/res/values-he/strings.xml b/app/src/main/res/values-he/strings.xml index 5784e8d0..1d902a97 100644 --- a/app/src/main/res/values-he/strings.xml +++ b/app/src/main/res/values-he/strings.xml @@ -129,6 +129,5 @@ אין עוד גרסאות נשכל לטעון מודול: %s - האפליקציה הושמדה. אנא ודא שהורדת אותה מהמקור הרשמי. הגרסה של LSPosed Manager ו- LSPosed Core לא תואמות. אנא התקן מחדש גרסאות תואמות. diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 429a9698..0f0abd47 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -175,7 +175,6 @@ Tidak ada rilis Gagal memuat repo modul: %s - Aplikasi ini berbahaya, silakan unduh versi terbaru aplikasi ini dari sumber resmi. Aplikasi LSPosed lebih baru dari kerangka kerja. Harap perbarui kerangka kerja LSPosed. Kerangka kerja LSPosed lebih baru dari aplikasi. Harap perbarui aplikasi dari /data/adb/lspd/manager.apk secara manual. Manajer rusak diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 85a10591..948d1a8d 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -174,10 +174,7 @@ Tidak ada rilis Gagal memuat repo modul: %s - Aplikasi ini berbahaya, silakan unduh versi terbaru aplikasi ini dari sumber resmi. Aplikasi LSPosed lebih baru dari kerangka kerja. Harap perbarui kerangka kerja LSPosed. Kerangka kerja LSPosed lebih baru dari aplikasi. Harap perbarui aplikasi dari /data/adb/lspd/manager.apk secara manual. Manajer rusak - Salin informasi kerusakan - Disalin diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index b7301db1..2d104350 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -176,7 +176,6 @@ Non ci sono altre versioni Impossibile caricare il repository dei moduli: %s - Quest\'app potrebbe essere corrotta, scarica l\'ultima versione dalla fonte ufficiale. L\'app di LSPosed è più recente del framework. Aggiorna il framework di LSPosed. Il framework di LSPosed è più recente dell\'app. Aggiorna l\'app da /data/adb/lspd/manager.apk manualmente. Manager andato in crash diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index e25a75d2..c5da3e48 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -128,6 +128,5 @@ אין עוד גרסאות נשכל לטעון מודול: %s - האפליקציה הושמדה. אנא ודא שהורדת אותה מהמקור הרשמי. הגרסה של LSPosed Manager ו- LSPosed Core לא תואמות. אנא התקן מחדש גרסאות תואמות. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index a96ba082..99a7f012 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -175,7 +175,6 @@ これ以上のリリースはありません モジュールリポジトリの読み込みに失敗: %s - 本アプリケーションの内部で壊れています。公式ソースからダウンロードされたものであるかを確認して下さい。 LSPosedアプリはフレームワークより新しいです。LSPosedフレームワークを更新してください。 LSPosed Manager と LSPosed Core のバージョンが一致していません。対応バージョンを再インストールして下さい。 マネージャーがクラッシュしました diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 7c8ae460..76d47083 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -155,7 +155,6 @@ 이전 버전 표시 모듈 저장소를 로드하지 못함: %s - 이 응용 프로그램이 삭제되었습니다. 공식 소스에서 다운로드했는지 확인하십시오. LSPosed Manager 및 LSPosed Core 버전이 일치하지 않습니다. 해당 버전을 다시 설치하십시오. 충돌 정보 전송 충돌 정보가 클립보드에 복사되었습니다. diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 91349d40..928252e9 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -176,7 +176,6 @@ Geen release meer Kan moduleopslagplaats niet laden: %1$s - Deze applicatie is vernietigd, zorg ervoor dat u deze downloadt vanaf de officiële bron. LSPosed app is nieuwer dan framework. Update LSPosed framework. De versie van LSPosed Manager en LSPosed Core zijn niet consistent. Installeer de corresponderende versie opnieuw. Manager gecrasht diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 4530fea4..75e9dfc9 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -178,7 +178,6 @@ Nie ma więcej wersji Nie udało się załadować repozytorium modułu: %s - Ta aplikacja może zostać zniszczona, pobierz najnowszą wersję tej aplikacji z oficjalnego źródła. Aplikacja LSPosed jest nowsza niż framework. Proszę zaktualizować framework LSPosed. Framework LSPosed jest nowszy niż aplikacja. Proszę zaktualizuj aplikację ręcznie z /data/adb/lspd/manager.apk. Menedżer uległ awarii diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 3f44c8cd..e2b443f2 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -176,7 +176,6 @@ Não há mais versões Falha ao carregar o repositório de módulos: %s - Este app foi destruído, certifique-se de que você baixou da fonte oficial. App do LSPosed é mais novo que framework. Atualize a Framework do Lsposed. O framework do LSPosed é mais recente que o app. Por favor, atualize o app manualmente em /data/adb/lspd/manager.apk. Gerenciador travou diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index c659586b..662dde04 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -116,10 +116,7 @@ Não há mais versões Falha ao carregar o repositório de módulos: %s - Este app pode estar corrompido, por favor, baixe a versão mais recente deste app pela fonte oficial. App do LSPosed é mais novo que framework. Atualize a Framework do LSPosed. Framework do LSPosed é mais novo que o app. Atualize manualmente o aplicativo em /data/adb/lspd/manager.apk. Gerenciador travou - Copiar informações do erro - Copiado diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index fa11eae1..d74b7340 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -116,7 +116,6 @@ Não há mais versões Falha ao carregar o repositório de módulos: %s - Este app pode estar corrompido, por favor, baixe a versão mais recente deste app pela fonte oficial. App do LSPosed é mais novo que framework. Atualize a Framework do LSPosed. Framework do LSPosed é mais novo que o app. Atualize manualmente o aplicativo em /data/adb/lspd/manager.apk. Gerenciador travou diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index aed502ad..43b53a2d 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -178,7 +178,6 @@ Больше нет других версий Не удалось загрузить репозиторий модуля: %s - Это приложение повреждено. Убедитесь, что загрузили его из официального источника Приложение LSPosed новее, чем фреймворк LSPosed. Обновите фреймворк LSPosed Фреймворк LSPosed новее, чем приложение LSPosed. Обновите приложение вручную из /data/adb/lspd/manager.apk Сбой приложения LSPosed diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 34962613..1e6a2153 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -170,7 +170,6 @@ Daha fazla sürüm yok Modül deposu yüklenemedi: %s - Bu uygulama bozuk olabilir, lütfen bu uygulamanın en son sürümünü resmi kaynaktan indirin. LSPosed uygulaması çerçeveden daha yenidir. Lütfen LSPosed çerçevesini güncelleyin. LSPosed çerçevesi, uygulamadan daha yenidir. Lütfen uygulamayı /data/adb/lspd/manager.apk adresinden manuel olarak güncelleyin. Yönetici çöktü diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index cff5ad20..67a50057 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -177,7 +177,6 @@ Більше релізів немає Не вдалося завантажити модуль репозиторія: %s - Ця програма припинила роботу, будь ласка, переконайтесь, що завантажили її з офіційного джерела. Програма LSPosed новіша, ніж фреймворк. Будь ласка, оновіть фреймворк LSPosed. Версія LSPosed Manager і LSPosed Core не узгоджуються. Будь ласка, встановіть відповідну версію. Менеджер зазнав збою diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index ba542d4a..54659f83 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -175,7 +175,6 @@ Không có phiên bản nào Tải kho lưu trữ mô-đun thất bại: %s - Ứng dụng này có thể đã bị phá hủy, vui lòng tải xuống phiên bản mới nhất của ứng dụng này từ nguồn chính thức. Ứng dụng LSPosed đang mới hơn framework. Xin hãy cập nhật LSPosed framework. LSPosed framework đang mới hơn phiên bản ứng dụng quản lý. Xin hãy cập nhật ứng dụng tại /data/adb/lspd/manager.apk thủ công. Quản lý hỏng hóc diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 95f7216b..2c11836d 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -175,7 +175,6 @@ 没有更旧的版本 模块仓库加载失败:%s - 此应用可能被损坏,请从官方来源下载该应用的最新版本。 LSPosed 应用的版本高于框架。请更新 LSPosed 框架。 LSPosed 框架的版本高于应用。请从 /data/adb/lspd/manager.apk 更新 LSPosed 应用。 应用出现未知错误 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 512d2137..8f5e45ac 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -175,7 +175,6 @@ 沒有更舊的版本 模組倉庫加載失敗: %s - 此應用程式可能被損壞,請確保您從官方來源下載該應用程式的最新版本。 LSPosed 管理器版本高於框架,請更新 LSPosed 框架。 LSPosed 管理器和 LSPosed 核心的版本不一致。請手動從 /data/adb/lspd/manager.apk 更新管理器。 應用程式出現未知錯誤 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 71681f79..b5bb0505 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -175,7 +175,6 @@ 沒有更早期的版本 模組倉庫載入失敗:%s - 此應用程式可能已毀損,請從官方來源下載該應用程式的最新版本。 LSPosed 應用程式的版本高於框架。請更新 LSPosed 框架。 LSPosed 框架的版本高於應用程式。請從 /data/adb/lspd/manager.apk 更新 LSPosed 應用程式。 應用程式出現未知錯誤 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6496e600..9489ce35 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -56,6 +56,11 @@ System version Device System ABI + Parasitic Manager Recommended + LSPosed now supports system parasitization to avoid detection. You can safely uninstall the manager after successfully creating a shortcut of the parasitic manager. In any case you can install the manager back from /data/adb/lspd/manager.apk. + Create shortcut + Never show + Failed to create shortcut: %1$s Save @@ -185,7 +190,6 @@ Failed to load module repo: %s - This app may be destroyed, please download the latest version of this app from the official source. LSPosed app is newer than framework. Please update LSPosed framework. LSPosed framework is newer than app. Please update the app from /data/adb/lspd/manager.apk manually. Manager crashed diff --git a/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java b/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java index a208ce24..d66f6ae6 100644 --- a/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java +++ b/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java @@ -227,10 +227,14 @@ public class ConfigManager { Log.e(TAG, Log.getStackTraceString(e)); } - updateManager(); + updateManager(false); } - public synchronized void updateManager() { + public synchronized void updateManager(boolean uninstalled) { + if (uninstalled){ + managerUid = -1; + return; + } if (!PackageService.isAlive()) return; try { PackageInfo info = PackageService.getPackageInfo(BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME, 0, 0); @@ -256,7 +260,7 @@ public class ConfigManager { Log.d(TAG, "pm is ready, updating cache"); // must ensure cache is valid for later usage instance.updateCaches(true); - instance.updateManager(); + instance.updateManager(false); } } return instance; diff --git a/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java b/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java index 104a4f4d..1168bc0a 100644 --- a/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java +++ b/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java @@ -263,9 +263,9 @@ public class LSPManagerService extends ILSPManagerService.Stub { } } - public static void createOrUpdateShortcut() { + public static void createOrUpdateShortcut(boolean force) { try { - if (ConfigManager.getInstance().isManagerInstalled()) { + if (!force && ConfigManager.getInstance().isManagerInstalled()) { Log.d(TAG, "Manager has installed, skip adding shortcut"); return; } @@ -654,4 +654,9 @@ public class LSPManagerService extends ILSPManagerService.Stub { forceStopPackage(BuildConfig.MANAGER_INJECTED_PKG_NAME, 0); stopAndStartActivity(BuildConfig.MANAGER_INJECTED_PKG_NAME, intent, false); } + + @Override + public void createShortcut() { + createOrUpdateShortcut(true); + } } diff --git a/core/src/main/java/org/lsposed/lspd/service/LSPosedService.java b/core/src/main/java/org/lsposed/lspd/service/LSPosedService.java index 8b41cc3d..a6e25da2 100644 --- a/core/src/main/java/org/lsposed/lspd/service/LSPosedService.java +++ b/core/src/main/java/org/lsposed/lspd/service/LSPosedService.java @@ -136,6 +136,8 @@ public class LSPosedService extends ILSPosedService.Stub { break; } } + boolean removed = intent.getAction().equals(Intent.ACTION_PACKAGE_FULLY_REMOVED) || + intent.getAction().equals(Intent.ACTION_UID_REMOVED); if (isXposedModule) { Log.d(TAG, "module " + moduleName + " changed, dispatching to manager"); var enabledModules = ConfigManager.getInstance().enabledModules(); @@ -143,8 +145,6 @@ public class LSPosedService extends ILSPosedService.Stub { boolean systemModule = scope != null && scope.parallelStream().anyMatch(app -> app.packageName.equals("android")); boolean enabled = Arrays.asList(enabledModules).contains(moduleName); - boolean removed = intent.getAction().equals(Intent.ACTION_PACKAGE_FULLY_REMOVED) || - intent.getAction().equals(Intent.ACTION_UID_REMOVED); if (!removed) { LSPManagerService.showNotification(moduleName, userId, enabled, systemModule); } @@ -154,17 +154,17 @@ public class LSPosedService extends ILSPosedService.Stub { if (BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME.equals(moduleName) && userId == 0) { Log.d(TAG, "Manager updated"); try { - ConfigManager.getInstance().updateManager(); + ConfigManager.getInstance().updateManager(removed); + LSPManagerService.createOrUpdateShortcut(false); } catch (Throwable e) { Log.e(TAG, Log.getStackTraceString(e)); } } } - synchronized public void dispatchUserUnlocked(Intent intent) { try { - LSPManagerService.createOrUpdateShortcut(); + LSPManagerService.createOrUpdateShortcut(false); } catch (Throwable e) { Log.e(TAG, "dispatch user unlocked", e); } @@ -173,7 +173,7 @@ public class LSPosedService extends ILSPosedService.Stub { synchronized public void dispatchConfigurationChanged(Intent intent) { try { ConfigFileManager.reloadConfiguration(); - LSPManagerService.createOrUpdateShortcut(); + LSPManagerService.createOrUpdateShortcut(false); } catch (Throwable e) { Log.e(TAG, "dispatch configuration changed", e); } diff --git a/core/src/main/java/org/lsposed/lspd/util/InstallerVerifier.java b/core/src/main/java/org/lsposed/lspd/util/InstallerVerifier.java index dbce17ea..166e2d8f 100644 --- a/core/src/main/java/org/lsposed/lspd/util/InstallerVerifier.java +++ b/core/src/main/java/org/lsposed/lspd/util/InstallerVerifier.java @@ -56,27 +56,6 @@ public class InstallerVerifier { } } - public static void hookBadManager(final ClassLoader classLoader) { - var str = "This app may be destroyed, please download the latest version of this app from the official source."; - try { - Class ConstantsClass = XposedHelpers.findClass("org.lsposed.manager.Constants", classLoader); - XposedHelpers.findAndHookMethod(android.app.Activity.class, "onCreate", Bundle.class, new XC_MethodHook() { - @Override - protected void afterHookedMethod(MethodHookParam param) { - try { - XposedHelpers.callStaticMethod(ConstantsClass, "showErrorToast", 0); - } catch (Throwable t) { - Utils.logW("showErrorToast: ", t); - Toast.makeText((Context) param.thisObject, str, Toast.LENGTH_LONG).show(); - } - new Handler(Looper.getMainLooper()).postDelayed(() -> System.exit(0), 1000); - } - }); - } catch (Throwable t) { - Utils.logW("hookBadManager: ", t); - } - } - public static boolean sendBinderToManager(final ClassLoader classLoader, IBinder binder) { Utils.logI("Found LSPosed Manager"); try { diff --git a/manager-service/src/main/aidl/org/lsposed/lspd/ILSPManagerService.aidl b/manager-service/src/main/aidl/org/lsposed/lspd/ILSPManagerService.aidl index 3328452c..cba181f0 100644 --- a/manager-service/src/main/aidl/org/lsposed/lspd/ILSPManagerService.aidl +++ b/manager-service/src/main/aidl/org/lsposed/lspd/ILSPManagerService.aidl @@ -65,4 +65,6 @@ interface ILSPManagerService { Map getLogs() = 34; void restartFor(in Intent intent) = 35; + + void createShortcut() = 36; }