[app] Recommend to use parasitic manager (#1194)
This commit is contained in:
parent
d51fa92f82
commit
7f247bd38f
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@
|
|||
|
||||
|
||||
<androidx.slidingpanelayout.widget.SlidingPaneLayout
|
||||
android:id="@+id/snackbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:animateLayoutChanges="true">
|
||||
|
|
|
|||
|
|
@ -34,5 +34,4 @@
|
|||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:navGraph="@navigation/nav_graph" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
|||
|
|
@ -180,7 +180,6 @@
|
|||
<string name="module_release_no_more">لا مزيد من الإصدار</string>
|
||||
<string name="repo_load_failed">فشل تحميل مستودع الوحدة: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">قد يتم تدمير هذا التطبيق، يرجى تحميل أحدث إصدار من هذا التطبيق من المصدر الرسمي.</string>
|
||||
<string name="outdated_core">تطبيق LSPosed أحدث من الإطار. الرجاء تحديث إطار LSPosd.</string>
|
||||
<string name="outdated_manager">إطار LSPosed أحدث من التطبيق. الرجاء تحديث التطبيق من /data/adb/lspd/manager.apk يدويا.</string>
|
||||
<string name="manager_crashed">تعطل المدير</string>
|
||||
|
|
|
|||
|
|
@ -176,7 +176,6 @@
|
|||
<string name="module_release_no_more">Keine Veröffentlichung mehr</string>
|
||||
<string name="repo_load_failed">Fehler beim Laden der Modulrepo: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Diese Anwendung wurde deinstalliert. Laden Sie sie unbedingt von der offiziellen Quelle herunter.</string>
|
||||
<string name="outdated_core">Die LSPosed-App ist neuer als das Framework. Bitte aktualisieren Sie das LSPosed-Framework.</string>
|
||||
<string name="outdated_manager">Die Version von LSPosed Manager und LSPosed Core stimmen nicht überein. Installieren Sie die entsprechende Version neu.</string>
|
||||
<string name="manager_crashed">Manager abgestürzt</string>
|
||||
|
|
|
|||
|
|
@ -176,7 +176,6 @@
|
|||
<string name="module_release_no_more">انتشار جدیدی نیست</string>
|
||||
<string name="repo_load_failed">ناموفق در بارگذاری ماژول: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">ممکن است این برنامه از بین برود ، لطفاً آخرین نسخه این برنامه را از منبع رسمی بارگیری کنید.</string>
|
||||
<string name="outdated_core">برنامه LSPosed جدیدتر از فریمورک است. لطفاً چارچوب LSPosed را به روز کنید.</string>
|
||||
<string name="outdated_manager">چارچوب LSPosed جدیدتر از برنامه است. لطفاً برنامه را از /data/adb/lspd/manager.apk به صورت دستی به روز کنید.</string>
|
||||
<string name="manager_crashed">منیجر هنگ کرده</string>
|
||||
|
|
|
|||
|
|
@ -176,7 +176,6 @@
|
|||
<string name="module_release_no_more">Pas d\’autres versions</string>
|
||||
<string name="repo_load_failed">Échec de chargement du dépôt des modules: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Cette application à été détruite, merci de vous assurer que vous l\’avez bien téléchargé depuis la source officielle.</string>
|
||||
<string name="outdated_core">L\'application LSPosed est plus réçente que le sous système. Merci de mettre à jour le sous système LSPosed.</string>
|
||||
<string name="outdated_manager">Version du Gestionnaire LSPosed et du noyau LSPosed ne sont pas cohérents. Merci de réinstaller la version correspondante.</string>
|
||||
<string name="manager_crashed">Plantage du Gestionnaire</string>
|
||||
|
|
|
|||
|
|
@ -129,6 +129,5 @@
|
|||
<string name="module_release_no_more">אין עוד גרסאות</string>
|
||||
<string name="repo_load_failed">נשכל לטעון מודול: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">האפליקציה הושמדה. אנא ודא שהורדת אותה מהמקור הרשמי.</string>
|
||||
<string name="outdated_manager">הגרסה של LSPosed Manager ו- LSPosed Core לא תואמות. אנא התקן מחדש גרסאות תואמות.</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -175,7 +175,6 @@
|
|||
<string name="module_release_no_more">Tidak ada rilis</string>
|
||||
<string name="repo_load_failed">Gagal memuat repo modul: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Aplikasi ini berbahaya, silakan unduh versi terbaru aplikasi ini dari sumber resmi.</string>
|
||||
<string name="outdated_core">Aplikasi LSPosed lebih baru dari kerangka kerja. Harap perbarui kerangka kerja LSPosed.</string>
|
||||
<string name="outdated_manager">Kerangka kerja LSPosed lebih baru dari aplikasi. Harap perbarui aplikasi dari /data/adb/lspd/manager.apk secara manual.</string>
|
||||
<string name="manager_crashed">Manajer rusak</string>
|
||||
|
|
|
|||
|
|
@ -174,10 +174,7 @@
|
|||
<string name="module_release_no_more">Tidak ada rilis</string>
|
||||
<string name="repo_load_failed">Gagal memuat repo modul: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Aplikasi ini berbahaya, silakan unduh versi terbaru aplikasi ini dari sumber resmi.</string>
|
||||
<string name="outdated_core">Aplikasi LSPosed lebih baru dari kerangka kerja. Harap perbarui kerangka kerja LSPosed.</string>
|
||||
<string name="outdated_manager">Kerangka kerja LSPosed lebih baru dari aplikasi. Harap perbarui aplikasi dari /data/adb/lspd/manager.apk secara manual.</string>
|
||||
<string name="manager_crashed">Manajer rusak</string>
|
||||
<string name="copy_crash_info">Salin informasi kerusakan</string>
|
||||
<string name="copy_toast_msg">Disalin</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -176,7 +176,6 @@
|
|||
<string name="module_release_no_more">Non ci sono altre versioni</string>
|
||||
<string name="repo_load_failed">Impossibile caricare il repository dei moduli: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Quest\'app potrebbe essere corrotta, scarica l\'ultima versione dalla fonte ufficiale.</string>
|
||||
<string name="outdated_core">L\'app di LSPosed è più recente del framework. Aggiorna il framework di LSPosed.</string>
|
||||
<string name="outdated_manager">Il framework di LSPosed è più recente dell\'app. Aggiorna l\'app da /data/adb/lspd/manager.apk manualmente.</string>
|
||||
<string name="manager_crashed">Manager andato in crash</string>
|
||||
|
|
|
|||
|
|
@ -128,6 +128,5 @@
|
|||
<string name="module_release_no_more">אין עוד גרסאות</string>
|
||||
<string name="repo_load_failed">נשכל לטעון מודול: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">האפליקציה הושמדה. אנא ודא שהורדת אותה מהמקור הרשמי.</string>
|
||||
<string name="outdated_manager">הגרסה של LSPosed Manager ו- LSPosed Core לא תואמות. אנא התקן מחדש גרסאות תואמות.</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -175,7 +175,6 @@
|
|||
<string name="module_release_no_more">これ以上のリリースはありません</string>
|
||||
<string name="repo_load_failed">モジュールリポジトリの読み込みに失敗: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">本アプリケーションの内部で壊れています。公式ソースからダウンロードされたものであるかを確認して下さい。</string>
|
||||
<string name="outdated_core">LSPosedアプリはフレームワークより新しいです。LSPosedフレームワークを更新してください。</string>
|
||||
<string name="outdated_manager">LSPosed Manager と LSPosed Core のバージョンが一致していません。対応バージョンを再インストールして下さい。</string>
|
||||
<string name="manager_crashed">マネージャーがクラッシュしました</string>
|
||||
|
|
|
|||
|
|
@ -155,7 +155,6 @@
|
|||
<string name="module_release_load_more">이전 버전 표시</string>
|
||||
<string name="repo_load_failed">모듈 저장소를 로드하지 못함: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">이 응용 프로그램이 삭제되었습니다. 공식 소스에서 다운로드했는지 확인하십시오.</string>
|
||||
<string name="outdated_manager">LSPosed Manager 및 LSPosed Core 버전이 일치하지 않습니다. 해당 버전을 다시 설치하십시오.</string>
|
||||
<string name="send_crash_info">충돌 정보 전송</string>
|
||||
<string name="crash_info_copied">충돌 정보가 클립보드에 복사되었습니다.</string>
|
||||
|
|
|
|||
|
|
@ -176,7 +176,6 @@
|
|||
<string name="module_release_no_more">Geen release meer</string>
|
||||
<string name="repo_load_failed">Kan moduleopslagplaats niet laden: %1$s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Deze applicatie is vernietigd, zorg ervoor dat u deze downloadt vanaf de officiële bron.</string>
|
||||
<string name="outdated_core">LSPosed app is nieuwer dan framework. Update LSPosed framework.</string>
|
||||
<string name="outdated_manager">De versie van LSPosed Manager en LSPosed Core zijn niet consistent. Installeer de corresponderende versie opnieuw.</string>
|
||||
<string name="manager_crashed">Manager gecrasht</string>
|
||||
|
|
|
|||
|
|
@ -178,7 +178,6 @@
|
|||
<string name="module_release_no_more">Nie ma więcej wersji</string>
|
||||
<string name="repo_load_failed">Nie udało się załadować repozytorium modułu: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Ta aplikacja może zostać zniszczona, pobierz najnowszą wersję tej aplikacji z oficjalnego źródła.</string>
|
||||
<string name="outdated_core">Aplikacja LSPosed jest nowsza niż framework. Proszę zaktualizować framework LSPosed.</string>
|
||||
<string name="outdated_manager">Framework LSPosed jest nowszy niż aplikacja. Proszę zaktualizuj aplikację ręcznie z /data/adb/lspd/manager.apk.</string>
|
||||
<string name="manager_crashed">Menedżer uległ awarii</string>
|
||||
|
|
|
|||
|
|
@ -176,7 +176,6 @@
|
|||
<string name="module_release_no_more">Não há mais versões</string>
|
||||
<string name="repo_load_failed">Falha ao carregar o repositório de módulos: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Este app foi destruído, certifique-se de que você baixou da fonte oficial.</string>
|
||||
<string name="outdated_core">App do LSPosed é mais novo que framework. Atualize a Framework do Lsposed.</string>
|
||||
<string name="outdated_manager">O framework do LSPosed é mais recente que o app. Por favor, atualize o app manualmente em /data/adb/lspd/manager.apk.</string>
|
||||
<string name="manager_crashed">Gerenciador travou</string>
|
||||
|
|
|
|||
|
|
@ -116,10 +116,7 @@
|
|||
<string name="module_release_no_more">Não há mais versões</string>
|
||||
<string name="repo_load_failed">Falha ao carregar o repositório de módulos: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Este app pode estar corrompido, por favor, baixe a versão mais recente deste app pela fonte oficial.</string>
|
||||
<string name="outdated_core">App do LSPosed é mais novo que framework. Atualize a Framework do LSPosed.</string>
|
||||
<string name="outdated_manager">Framework do LSPosed é mais novo que o app. Atualize manualmente o aplicativo em /data/adb/lspd/manager.apk.</string>
|
||||
<string name="manager_crashed">Gerenciador travou</string>
|
||||
<string name="copy_crash_info">Copiar informações do erro</string>
|
||||
<string name="copy_toast_msg">Copiado</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -116,7 +116,6 @@
|
|||
<string name="module_release_no_more">Não há mais versões</string>
|
||||
<string name="repo_load_failed">Falha ao carregar o repositório de módulos: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Este app pode estar corrompido, por favor, baixe a versão mais recente deste app pela fonte oficial.</string>
|
||||
<string name="outdated_core">App do LSPosed é mais novo que framework. Atualize a Framework do LSPosed.</string>
|
||||
<string name="outdated_manager">Framework do LSPosed é mais novo que o app. Atualize manualmente o aplicativo em /data/adb/lspd/manager.apk.</string>
|
||||
<string name="manager_crashed">Gerenciador travou</string>
|
||||
|
|
|
|||
|
|
@ -178,7 +178,6 @@
|
|||
<string name="module_release_no_more">Больше нет других версий</string>
|
||||
<string name="repo_load_failed">Не удалось загрузить репозиторий модуля: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Это приложение повреждено. Убедитесь, что загрузили его из официального источника</string>
|
||||
<string name="outdated_core">Приложение LSPosed новее, чем фреймворк LSPosed. Обновите фреймворк LSPosed</string>
|
||||
<string name="outdated_manager">Фреймворк LSPosed новее, чем приложение LSPosed. Обновите приложение вручную из /data/adb/lspd/manager.apk</string>
|
||||
<string name="manager_crashed">Сбой приложения LSPosed</string>
|
||||
|
|
|
|||
|
|
@ -170,7 +170,6 @@
|
|||
<string name="module_release_no_more">Daha fazla sürüm yok</string>
|
||||
<string name="repo_load_failed">Modül deposu yüklenemedi: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Bu uygulama bozuk olabilir, lütfen bu uygulamanın en son sürümünü resmi kaynaktan indirin.</string>
|
||||
<string name="outdated_core">LSPosed uygulaması çerçeveden daha yenidir. Lütfen LSPosed çerçevesini güncelleyin.</string>
|
||||
<string name="outdated_manager">LSPosed çerçevesi, uygulamadan daha yenidir. Lütfen uygulamayı /data/adb/lspd/manager.apk adresinden manuel olarak güncelleyin.</string>
|
||||
<string name="manager_crashed">Yönetici çöktü</string>
|
||||
|
|
|
|||
|
|
@ -177,7 +177,6 @@
|
|||
<string name="module_release_no_more">Більше релізів немає</string>
|
||||
<string name="repo_load_failed">Не вдалося завантажити модуль репозиторія: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Ця програма припинила роботу, будь ласка, переконайтесь, що завантажили її з офіційного джерела.</string>
|
||||
<string name="outdated_core">Програма LSPosed новіша, ніж фреймворк. Будь ласка, оновіть фреймворк LSPosed.</string>
|
||||
<string name="outdated_manager">Версія LSPosed Manager і LSPosed Core не узгоджуються. Будь ласка, встановіть відповідну версію.</string>
|
||||
<string name="manager_crashed">Менеджер зазнав збою</string>
|
||||
|
|
|
|||
|
|
@ -175,7 +175,6 @@
|
|||
<string name="module_release_no_more">Không có phiên bản nào</string>
|
||||
<string name="repo_load_failed">Tải kho lưu trữ mô-đun thất bại: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">Ứ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.</string>
|
||||
<string name="outdated_core">Ứng dụng LSPosed đang mới hơn framework. Xin hãy cập nhật LSPosed framework.</string>
|
||||
<string name="outdated_manager">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.</string>
|
||||
<string name="manager_crashed">Quản lý hỏng hóc</string>
|
||||
|
|
|
|||
|
|
@ -175,7 +175,6 @@
|
|||
<string name="module_release_no_more">没有更旧的版本</string>
|
||||
<string name="repo_load_failed">模块仓库加载失败:%s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">此应用可能被损坏,请从官方来源下载该应用的最新版本。</string>
|
||||
<string name="outdated_core">LSPosed 应用的版本高于框架。请更新 LSPosed 框架。</string>
|
||||
<string name="outdated_manager">LSPosed 框架的版本高于应用。请从 /data/adb/lspd/manager.apk 更新 LSPosed 应用。</string>
|
||||
<string name="manager_crashed">应用出现未知错误</string>
|
||||
|
|
|
|||
|
|
@ -175,7 +175,6 @@
|
|||
<string name="module_release_no_more">沒有更舊的版本</string>
|
||||
<string name="repo_load_failed">模組倉庫加載失敗: %s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">此應用程式可能被損壞,請確保您從官方來源下載該應用程式的最新版本。</string>
|
||||
<string name="outdated_core">LSPosed 管理器版本高於框架,請更新 LSPosed 框架。</string>
|
||||
<string name="outdated_manager">LSPosed 管理器和 LSPosed 核心的版本不一致。請手動從 /data/adb/lspd/manager.apk 更新管理器。</string>
|
||||
<string name="manager_crashed">應用程式出現未知錯誤</string>
|
||||
|
|
|
|||
|
|
@ -175,7 +175,6 @@
|
|||
<string name="module_release_no_more">沒有更早期的版本</string>
|
||||
<string name="repo_load_failed">模組倉庫載入失敗:%s</string>
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">此應用程式可能已毀損,請從官方來源下載該應用程式的最新版本。</string>
|
||||
<string name="outdated_core">LSPosed 應用程式的版本高於框架。請更新 LSPosed 框架。</string>
|
||||
<string name="outdated_manager">LSPosed 框架的版本高於應用程式。請從 /data/adb/lspd/manager.apk 更新 LSPosed 應用程式。</string>
|
||||
<string name="manager_crashed">應用程式出現未知錯誤</string>
|
||||
|
|
|
|||
|
|
@ -56,6 +56,11 @@
|
|||
<string name="info_system_version">System version</string>
|
||||
<string name="info_device">Device</string>
|
||||
<string name="info_system_abi">System ABI</string>
|
||||
<string name="parasitic_recommend">Parasitic Manager Recommended</string>
|
||||
<string name="parasitic_recommend_summary">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.</string>
|
||||
<string name="create_shortcut">Create shortcut</string>
|
||||
<string name="never_show">Never show</string>
|
||||
<string name="failed_to_create_shortcut">Failed to create shortcut: %1$s</string>
|
||||
|
||||
<!-- LogsActivity -->
|
||||
<string name="menuSaveToSd">Save</string>
|
||||
|
|
@ -185,7 +190,6 @@
|
|||
<string name="repo_load_failed">Failed to load module repo: %s</string>
|
||||
|
||||
<!-- CrashReportActivity -->
|
||||
<string name="app_destroyed">This app may be destroyed, please download the latest version of this app from the official source.</string>
|
||||
<string name="outdated_core">LSPosed app is newer than framework. Please update LSPosed framework.</string>
|
||||
<string name="outdated_manager">LSPosed framework is newer than app. Please update the app from /data/adb/lspd/manager.apk manually.</string>
|
||||
<string name="manager_crashed">Manager crashed</string>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -65,4 +65,6 @@ interface ILSPManagerService {
|
|||
Map<String,ParcelFileDescriptor> getLogs() = 34;
|
||||
|
||||
void restartFor(in Intent intent) = 35;
|
||||
|
||||
void createShortcut() = 36;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue