/* * Copyright (c) 2023 to present Androidacy and contributors. Names, logos, icons, and the Androidacy name are all trademarks of Androidacy and may not be used without license. See LICENSE for more information. */ package com.fox2code.mmm import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.webkit.WebView import androidx.annotation.Keep import com.fox2code.mmm.manager.ModuleManager import com.fox2code.mmm.repo.RepoManager /** * Class made to expose some manager functions to xposed modules. * It will not be obfuscated on release builds */ @Suppress("UNUSED_PARAMETER") @Keep enum class XHooks { ; companion object { @JvmStatic @Keep fun onRepoManagerInitialize() { // Call addXRepo here if you are an XPosed module } @JvmStatic @Keep fun onRepoManagerInitialized() { } @JvmStatic @Keep fun isModuleActive(moduleId: String?): Boolean { return ModuleManager.isModuleActive(moduleId!!) } @Suppress("DEPRECATION") @JvmStatic @Keep @Throws(PackageManager.NameNotFoundException::class) fun checkConfigTargetExists(context: Context, packageName: String, config: String) { if ("org.lsposed.manager" == config && "org.lsposed.manager" == packageName && (isModuleActive("riru_lsposed") || isModuleActive("zygisk_lsposed")) ) return // Skip check for lsposed as it is probably injected into the system. context.packageManager.getPackageInfo(packageName, 0) } @Suppress("UNUSED_PARAMETER") @JvmStatic @Keep fun getConfigIntent(context: Context, packageName: String?, config: String?): Intent? { return context.packageManager.getLaunchIntentForPackage(packageName!!) } @JvmStatic @Keep fun onWebViewInitialize(webView: WebView?, allowInstall: Boolean) { if (webView == null) throw NullPointerException("WebView is null!") } @Keep fun addXRepo(url: String?, fallbackName: String?): XRepo { return url?.let { RepoManager.iNSTANCE_UNSAFE?.addOrGet(it, fallbackName) }!! } @Keep fun getXRepo(url: String?): XRepo { return RepoManager.iNSTANCE_UNSAFE?.get(url) ?: throw NullPointerException("Repo not found!") } @get:Keep val xRepos: Collection get() = RepoManager.iNSTANCE_UNSAFE!!.xRepos } }