├── .editorconfig ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── BUG-REPORT.yml │ ├── FEATURE-REQUEST.yml │ ├── MIGRATION-REQUEST.yml │ └── config.yml ├── dependabot.yml └── workflows │ ├── android.yml │ ├── androidu.yml │ └── crowdin.yml ├── .gitignore ├── .idea └── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── LICENSE ├── README.md ├── README_en-US.md ├── README_pt-BR.md ├── app ├── .gitignore ├── build.gradle ├── dict.txt ├── libs │ ├── animation-release.aar │ ├── appcompat-release.aar │ ├── core-release.aar │ ├── haptic-release.aar │ ├── hyperceiler_expansion_packs-debug.aar │ ├── miui-framework.jar │ ├── miui.jar │ ├── preference-release.aar │ ├── smooth-release.aar │ └── springback-release.aar ├── proguard-log.pro ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ └── xposed_init │ ├── java │ └── com │ │ ├── sevtinge │ │ └── cemiuiler │ │ │ ├── Application.java │ │ │ ├── CrashRecord.kt │ │ │ ├── XposedInit.kt │ │ │ ├── callback │ │ │ └── IAppSelectCallback.java │ │ │ ├── data │ │ │ ├── AppData.java │ │ │ ├── LocationData.java │ │ │ ├── ModData.java │ │ │ ├── SQLiteHelper.java │ │ │ └── adapter │ │ │ │ ├── AppDataAdapter.java │ │ │ │ ├── ModSearchAdapter.java │ │ │ │ └── MutipleChoiceAdapter.java │ │ │ ├── module │ │ │ ├── app │ │ │ │ ├── AiAsst.java │ │ │ │ ├── Aod.java │ │ │ │ ├── Barrage.java │ │ │ │ ├── Browser.java │ │ │ │ ├── Camera.java │ │ │ │ ├── Clock.java │ │ │ │ ├── ContentExtension.java │ │ │ │ ├── Creation.java │ │ │ │ ├── Downloads.java │ │ │ │ ├── ExternalStorage.java │ │ │ │ ├── FileExplorer.java │ │ │ │ ├── Gallery.java │ │ │ │ ├── GlobalActions.java │ │ │ │ ├── GuardProvider.java │ │ │ │ ├── Home.java │ │ │ │ ├── InCallUi.java │ │ │ │ ├── Joyose.java │ │ │ │ ├── Lbe.java │ │ │ │ ├── Market.java │ │ │ │ ├── MediaEditor.java │ │ │ │ ├── MiLink.java │ │ │ │ ├── MiSettings.java │ │ │ │ ├── MiShare.java │ │ │ │ ├── MiWallpaper.java │ │ │ │ ├── Mirror.java │ │ │ │ ├── Mms.java │ │ │ │ ├── Mtb.java │ │ │ │ ├── Music.java │ │ │ │ ├── NetworkBoost.java │ │ │ │ ├── Nfc.java │ │ │ │ ├── Notes.java │ │ │ │ ├── PackageInstaller.java │ │ │ │ ├── PersonalAssistant.java │ │ │ │ ├── Phone.java │ │ │ │ ├── PowerKeeper.java │ │ │ │ ├── Scanner.java │ │ │ │ ├── ScreenRecorder.java │ │ │ │ ├── ScreenShot.java │ │ │ │ ├── SecurityCenter.java │ │ │ │ ├── Settings.java │ │ │ │ ├── SystemFramework.java │ │ │ │ ├── SystemFrameworkForCorePatch.java │ │ │ │ ├── SystemSettings.java │ │ │ │ ├── SystemUI.java │ │ │ │ ├── ThemeManager.java │ │ │ │ ├── TsmClient.java │ │ │ │ ├── Updater.java │ │ │ │ ├── Various.java │ │ │ │ ├── VoiceAssist.java │ │ │ │ └── Weather.java │ │ │ ├── base │ │ │ │ ├── BaseHook.java │ │ │ │ ├── BaseModule.java │ │ │ │ ├── BaseXposedInit.java │ │ │ │ ├── HostDir.kt │ │ │ │ └── IXposedHook.java │ │ │ └── hook │ │ │ │ ├── aiasst │ │ │ │ └── AiCaptions.kt │ │ │ │ ├── aod │ │ │ │ └── UnlockAlwaysOnDisplay.kt │ │ │ │ ├── barrage │ │ │ │ ├── AnyBarrage.kt │ │ │ │ └── CustomBarrageLength.kt │ │ │ │ ├── browser │ │ │ │ └── DebugMode.kt │ │ │ │ ├── camera │ │ │ │ ├── EnableLabOptions.kt │ │ │ │ ├── Unlock120Fps.java │ │ │ │ ├── Unlock60Fps.java │ │ │ │ ├── UnlockAiEnhance.java │ │ │ │ ├── UnlockAiShutter.java │ │ │ │ ├── UnlockAiWatermark.java │ │ │ │ ├── UnlockAmbilight.java │ │ │ │ ├── UnlockAudioZoom.java │ │ │ │ ├── UnlockClone.java │ │ │ │ ├── UnlockColorEnhance.java │ │ │ │ ├── UnlockCosmeticMirror.java │ │ │ │ ├── UnlockCvlens.java │ │ │ │ ├── UnlockCyberFocusVersion2.java │ │ │ │ ├── UnlockDoc.java │ │ │ │ ├── UnlockDualcam.java │ │ │ │ ├── UnlockDuration.java │ │ │ │ ├── UnlockFilm.java │ │ │ │ ├── UnlockFilmDelay.java │ │ │ │ ├── UnlockFilmDollyZoom.java │ │ │ │ ├── UnlockFilmDream.java │ │ │ │ ├── UnlockFilmSlowShutter.java │ │ │ │ ├── UnlockFilmTimeBackflow.java │ │ │ │ ├── UnlockFilmTimeFreeze.java │ │ │ │ ├── UnlockHandGesture.java │ │ │ │ ├── UnlockHdr.java │ │ │ │ ├── UnlockHeic.java │ │ │ │ ├── UnlockIdcard.java │ │ │ │ ├── UnlockLog.java │ │ │ │ ├── UnlockMakeup.java │ │ │ │ ├── UnlockMenMakeup.java │ │ │ │ ├── UnlockMilive.java │ │ │ │ ├── UnlockMoon.java │ │ │ │ ├── UnlockNevus.java │ │ │ │ ├── UnlockNewBeauty.java │ │ │ │ ├── UnlockPano.java │ │ │ │ ├── UnlockPixel.java │ │ │ │ ├── UnlockPortrait.java │ │ │ │ ├── UnlockRaw.java │ │ │ │ ├── UnlockSlow.java │ │ │ │ ├── UnlockTrackEyes.java │ │ │ │ ├── UnlockTrackFeature.java │ │ │ │ ├── UnlockTrackFocus.java │ │ │ │ ├── UnlockVideosky.java │ │ │ │ ├── UnlockVlog.java │ │ │ │ └── UnlockVlogPro.java │ │ │ │ ├── clock │ │ │ │ └── EnableHourGlass.java │ │ │ │ ├── contentextension │ │ │ │ ├── DoublePress.kt │ │ │ │ ├── HorizontalContentExtension.kt │ │ │ │ ├── LinkOpenMode.java │ │ │ │ ├── SuperImage.kt │ │ │ │ ├── UnlockTaplus.kt │ │ │ │ └── UseThirdPartyBrowser.java │ │ │ │ ├── creation │ │ │ │ └── UnlockCreation.kt │ │ │ │ ├── downloads │ │ │ │ └── FuckXlDownload.java │ │ │ │ ├── externalstorage │ │ │ │ └── DisableFolderCantUse.java │ │ │ │ ├── fileexplorer │ │ │ │ └── SelectName.kt │ │ │ │ ├── gallery │ │ │ │ ├── EnableHdrEnhance.java │ │ │ │ ├── EnableIdPhoto.java │ │ │ │ ├── EnableMagicMatting.java │ │ │ │ ├── EnableMagicSky.java │ │ │ │ ├── EnableOcr.java │ │ │ │ ├── EnableOcrForm.java │ │ │ │ ├── EnablePdf.java │ │ │ │ ├── EnablePhotoMovie.java │ │ │ │ ├── EnableRemover2.java │ │ │ │ ├── EnableTextYanhua.java │ │ │ │ ├── EnableVideoEditor.java │ │ │ │ └── EnableVideoPost.java │ │ │ │ ├── guardprovider │ │ │ │ ├── DisableUploadAppList.java │ │ │ │ └── DisableUploadAppListNew.kt │ │ │ │ ├── home │ │ │ │ ├── AllAppsBlur.java │ │ │ │ ├── AnimDurationRatio.kt │ │ │ │ ├── FreeFormCountForHome.java │ │ │ │ ├── HideNavigationBar.java │ │ │ │ ├── HomePortraitReverse.java │ │ │ │ ├── MaxFreeForm.kt │ │ │ │ ├── ScreenSwipe.java │ │ │ │ ├── SeekPoints.java │ │ │ │ ├── SetDeviceLevel.kt │ │ │ │ ├── StickyFloatingWindowsForHome.java │ │ │ │ ├── ToastSlideAgain.java │ │ │ │ ├── UnlockHotseatIcon.kt │ │ │ │ ├── UserPresentAnimation.java │ │ │ │ ├── WidgetCornerRadius.java │ │ │ │ ├── WidgetCrack.java │ │ │ │ ├── dock │ │ │ │ │ ├── DisableRecentsIcon.kt │ │ │ │ │ ├── DockCustom.java │ │ │ │ │ ├── FoldDeviceDock.kt │ │ │ │ │ ├── FoldDock.java │ │ │ │ │ ├── HideSeekPoint.kt │ │ │ │ │ └── ShowDockIconTitle.kt │ │ │ │ ├── drawer │ │ │ │ │ ├── AllAppsContainerViewBlur.kt │ │ │ │ │ ├── AppDrawer.kt │ │ │ │ │ └── PinyinArrangement.java │ │ │ │ ├── folder │ │ │ │ │ ├── BigFolderIcon.java │ │ │ │ │ ├── BigFolderIconBlur.java │ │ │ │ │ ├── BigFolderIconBlur1x2.java │ │ │ │ │ ├── BigFolderIconBlur2x1.java │ │ │ │ │ ├── BigFolderItemMaxCount.java │ │ │ │ │ ├── FolderAnimation.kt │ │ │ │ │ ├── FolderAutoClose.kt │ │ │ │ │ ├── FolderBlur.kt │ │ │ │ │ ├── FolderColumns.kt │ │ │ │ │ ├── FolderShade.java │ │ │ │ │ ├── FolderVerticalPadding.kt │ │ │ │ │ └── SmallFolderIconBlur.java │ │ │ │ ├── gesture │ │ │ │ │ ├── DoubleTap.java │ │ │ │ │ ├── DoubleTapController.kt │ │ │ │ │ ├── HotSeatSwipe.java │ │ │ │ │ ├── QuickBack.java │ │ │ │ │ ├── ShakeDevice.java │ │ │ │ │ └── SwipeAndStop.java │ │ │ │ ├── layout │ │ │ │ │ ├── HotSeatsHeight.java │ │ │ │ │ ├── HotSeatsMarginBottom.java │ │ │ │ │ ├── HotSeatsMarginTop.java │ │ │ │ │ ├── SearchBarMarginBottom.java │ │ │ │ │ ├── ShowClock.java │ │ │ │ │ ├── UnlockGrids.java │ │ │ │ │ ├── UnlockGridsNoWord.java │ │ │ │ │ └── WorkspacePadding.java │ │ │ │ ├── mipad │ │ │ │ │ ├── EnableHideGestureLine.kt │ │ │ │ │ ├── EnableMoreSetting.kt │ │ │ │ │ └── SetGestureNeedFingerNum.kt │ │ │ │ ├── navigation │ │ │ │ │ ├── BackGestureAreaHeight.java │ │ │ │ │ └── BackGestureAreaWidth.java │ │ │ │ ├── other │ │ │ │ │ ├── AlwaysBlurWallpaper.kt │ │ │ │ │ ├── AlwaysShowStatusClock.kt │ │ │ │ │ ├── BlurRadius.kt │ │ │ │ │ ├── BlurWhenShowShortcutMenu.kt │ │ │ │ │ ├── DisableHideGoogle.kt │ │ │ │ │ ├── FixAndroidRS.kt │ │ │ │ │ ├── FreeformShortcutMenu.java │ │ │ │ │ ├── HomeMode.java │ │ │ │ │ ├── InfiniteScroll.java │ │ │ │ │ ├── OverlapMode.kt │ │ │ │ │ ├── ShortcutBackgroundBlur.kt │ │ │ │ │ ├── ShortcutItemCount.kt │ │ │ │ │ └── ShowAllHideApp.kt │ │ │ │ ├── recent │ │ │ │ │ ├── AlwaysShowCleanUp.kt │ │ │ │ │ ├── BlurLevel.kt │ │ │ │ │ ├── CardTextColor.kt │ │ │ │ │ ├── CardTextSize.kt │ │ │ │ │ ├── DisableRecentViewWallpaperDarken.kt │ │ │ │ │ ├── FreeformCardBackgroundColor.kt │ │ │ │ │ ├── HideCleanUp.kt │ │ │ │ │ ├── HideFreeform.kt │ │ │ │ │ ├── HideStatusBarWhenEnterRecent.kt │ │ │ │ │ ├── MemInfoShow.kt │ │ │ │ │ ├── RealMemory.kt │ │ │ │ │ ├── RecentResource.kt │ │ │ │ │ ├── RecentText.kt │ │ │ │ │ ├── RemoveCardAnim.kt │ │ │ │ │ ├── RemoveIcon.kt │ │ │ │ │ ├── TaskViewHorizontal.kt │ │ │ │ │ └── TaskViewVertical.kt │ │ │ │ ├── title │ │ │ │ │ ├── AnimParamCustom.java │ │ │ │ │ ├── BigIconCorner.kt │ │ │ │ │ ├── DisableHideFile.kt │ │ │ │ │ ├── DisableHideTheme.kt │ │ │ │ │ ├── DownloadAnimation.java │ │ │ │ │ ├── EnableIconMonetColor.kt │ │ │ │ │ ├── EnableIconMonoChrome.java │ │ │ │ │ ├── FixAnimation.java │ │ │ │ │ ├── HiddenAllTitle.java │ │ │ │ │ ├── IconScaleHook.java │ │ │ │ │ ├── IconTitleColor.kt │ │ │ │ │ ├── LargeIconCornerRadius.java │ │ │ │ │ ├── NewInstallIndicator.java │ │ │ │ │ ├── PerfectIcon.java │ │ │ │ │ ├── TitleFontSize.java │ │ │ │ │ └── TitleMarquee.java │ │ │ │ └── widget │ │ │ │ │ ├── AllWidgetAnimation.java │ │ │ │ │ ├── AllowMoveAllWidgetToMinus.kt │ │ │ │ │ ├── AlwaysShowMiuiWidget.kt │ │ │ │ │ ├── HideWidgetTitles.kt │ │ │ │ │ └── ResizableWidgets.kt │ │ │ │ ├── incallui │ │ │ │ ├── AnswerInHeadUp.java │ │ │ │ └── HideCrbt.java │ │ │ │ ├── joyose │ │ │ │ ├── DisableCloudControl.java │ │ │ │ ├── DisableCloudControl.kt │ │ │ │ ├── EnableGpuTuner.java │ │ │ │ └── EnableGpuTuner.kt │ │ │ │ ├── lbe │ │ │ │ └── DisableClipboardTip.kt │ │ │ │ ├── market │ │ │ │ ├── DeviceModify.java │ │ │ │ └── NewIcon.java │ │ │ │ ├── mediaeditor │ │ │ │ ├── FilterManagerAll.kt │ │ │ │ └── UnlockMinimumCropLimitNew.kt │ │ │ │ ├── milink │ │ │ │ └── UnlockMiShare.java │ │ │ │ ├── mirror │ │ │ │ └── UnlockMiuiPlus.java │ │ │ │ ├── misettings │ │ │ │ ├── CustomRefreshRate.kt │ │ │ │ └── ShowMoreFpsList.kt │ │ │ │ ├── mishare │ │ │ │ ├── NoAutoTurnOff.kt │ │ │ │ └── UnlockTurboMode.kt │ │ │ │ ├── miwallpaper │ │ │ │ └── UnlockSuperWallpaper.java │ │ │ │ ├── mms │ │ │ │ └── DisableAd.kt │ │ │ │ ├── mtb │ │ │ │ ├── BypassAuthentication.kt │ │ │ │ └── IsUserBuild.kt │ │ │ │ ├── music │ │ │ │ └── DisableAd.java │ │ │ │ ├── networkboost │ │ │ │ └── LinkTurboToast.java │ │ │ │ ├── nfc │ │ │ │ ├── AllowInformationScreen.kt │ │ │ │ └── DisableSound.java │ │ │ │ ├── packageinstaller │ │ │ │ ├── AllAsSystemApp.kt │ │ │ │ ├── DisableAD.kt │ │ │ │ ├── DisableCountChecking.kt │ │ │ │ ├── DisableSafeModelTip.kt │ │ │ │ ├── DisplayMoreApkInfo.java │ │ │ │ ├── DisplayMoreApkInfoNew.kt │ │ │ │ ├── InstallRiskDisable.kt │ │ │ │ ├── InstallSource.java │ │ │ │ ├── MiuiPackageInstallModify.java │ │ │ │ ├── SafeMode.java │ │ │ │ └── UpdateSystemApp.java │ │ │ │ ├── personalassistant │ │ │ │ ├── BlurOverlay.java │ │ │ │ ├── BlurPersonalAssistant.kt │ │ │ │ ├── BlurPersonalAssistantBackGround.kt │ │ │ │ ├── EnableFoldWidget.java │ │ │ │ ├── PadWidgetEnable.java │ │ │ │ └── WidgetCrack.kt │ │ │ │ ├── phone │ │ │ │ ├── DualNrSupport.kt │ │ │ │ ├── DualSaSupport.kt │ │ │ │ ├── ModemFeature.kt │ │ │ │ ├── N1BandPhone.kt │ │ │ │ ├── N28BandPhone.kt │ │ │ │ ├── N5N8BandPhone.kt │ │ │ │ └── ViceSlotVolteButton.kt │ │ │ │ ├── powerkeeper │ │ │ │ ├── CustomRefreshRate.kt │ │ │ │ ├── DontKillApps.kt │ │ │ │ ├── LockMaxFps.kt │ │ │ │ └── PreventBatteryWitelist.java │ │ │ │ ├── scanner │ │ │ │ ├── EnableCard.java │ │ │ │ ├── EnableDocPpt.java │ │ │ │ ├── EnableOcr.java │ │ │ │ ├── EnableTranslation.java │ │ │ │ └── document │ │ │ │ │ ├── EnableDocument.java │ │ │ │ │ ├── EnableExcel.java │ │ │ │ │ └── EnablePpt.java │ │ │ │ ├── screenrecorder │ │ │ │ ├── ForceSupportPlaybackCapture.kt │ │ │ │ ├── SaveToMovies.kt │ │ │ │ ├── ScreenRecorderConfig.kt │ │ │ │ └── UnlockMoreVolumeFrom.java │ │ │ │ ├── screenshot │ │ │ │ ├── DeviceShellCustomize.kt │ │ │ │ ├── SaveToPictures.kt │ │ │ │ ├── UnlockMinimumCropLimit.kt │ │ │ │ └── UnlockPrivacyMarking.kt │ │ │ │ ├── securitycenter │ │ │ │ ├── AppLockPinScramble.java │ │ │ │ ├── BlurSecurity.kt │ │ │ │ ├── DisableReport.kt │ │ │ │ ├── GetBubbleAppString.kt │ │ │ │ ├── IsSbnBelongToActiveBubbleApp.kt │ │ │ │ ├── NewBoxBlur.java │ │ │ │ ├── RemoveConversationBubbleSettingsRestriction.kt │ │ │ │ ├── RemoveOpenAppConfirmationPopup.kt │ │ │ │ ├── SidebarLineCustom.kt │ │ │ │ ├── VideoDolbyOpen.java │ │ │ │ ├── app │ │ │ │ │ ├── AppDefaultSort.java │ │ │ │ │ ├── AppDetails.java │ │ │ │ │ ├── AppDisable.java │ │ │ │ │ ├── AppRestrict.java │ │ │ │ │ └── OpenByDefaultSetting.kt │ │ │ │ ├── battery │ │ │ │ │ ├── ScreenUsedTime.kt │ │ │ │ │ ├── ShowBatteryTemperature.java │ │ │ │ │ ├── ShowBatteryTemperatureNew.kt │ │ │ │ │ ├── UnlockSmartCharge.kt │ │ │ │ │ └── UnlockSuperWirelessCharge.kt │ │ │ │ ├── beauty │ │ │ │ │ ├── BeautyFace.kt │ │ │ │ │ ├── BeautyLightAuto.kt │ │ │ │ │ ├── BeautyPc.kt │ │ │ │ │ └── BeautyPrivacy.kt │ │ │ │ ├── lab │ │ │ │ │ ├── AiClipboardEnable.kt │ │ │ │ │ ├── BlurLocationEnable.kt │ │ │ │ │ ├── GetNumberEnable.kt │ │ │ │ │ └── LabUtilsClass.kt │ │ │ │ ├── other │ │ │ │ │ ├── DisableRootCheck.kt │ │ │ │ │ ├── FuckRiskPkg.kt │ │ │ │ │ ├── LockOneHundredPoints.kt │ │ │ │ │ ├── NoLowBatteryWarning.kt │ │ │ │ │ └── SkipCountDownLimit.java │ │ │ │ └── sidebar │ │ │ │ │ ├── AddSideBarExpandReceiver.java │ │ │ │ │ ├── DisableDockSuggest.java │ │ │ │ │ ├── game │ │ │ │ │ ├── RemoveMacroBlackList.kt │ │ │ │ │ └── UnlockGunService.kt │ │ │ │ │ └── video │ │ │ │ │ ├── DisableRemoveScreenHoldOn.kt │ │ │ │ │ ├── UnlockEnhanceContours.kt │ │ │ │ │ ├── UnlockMemc.kt │ │ │ │ │ └── UnlockSuperResolution.kt │ │ │ │ ├── settings │ │ │ │ ├── CemiuilerSettings.java │ │ │ │ ├── NotificationImportance.java │ │ │ │ └── VolumeSeparateControlForSettings.java │ │ │ │ ├── systemframework │ │ │ │ ├── AllRotations.java │ │ │ │ ├── AllowUninstall.java │ │ │ │ ├── AllowUntrustedTouch.java │ │ │ │ ├── AppDisableService.java │ │ │ │ ├── AppLinkVerify.java │ │ │ │ ├── BackgroundBlurDrawable.kt │ │ │ │ ├── CleanOpenMenu.java │ │ │ │ ├── CleanShareMenu.java │ │ │ │ ├── DeleteOnPostNotification.kt │ │ │ │ ├── DisableCleaner.kt │ │ │ │ ├── DisableFreeformBlackList.java │ │ │ │ ├── DisablePinVerifyPer72h.java │ │ │ │ ├── FlagSecure.java │ │ │ │ ├── FreeFormCount.kt │ │ │ │ ├── FreeformBubble.java │ │ │ │ ├── LocationSimulation.java │ │ │ │ ├── MultiFreeFormSupported.kt │ │ │ │ ├── PackagePermissions.java │ │ │ │ ├── RemoveSmallWindowRestrictions.kt │ │ │ │ ├── ScreenRotation.java │ │ │ │ ├── SpeedInstall.java │ │ │ │ ├── StickyFloatingWindows.java │ │ │ │ ├── ThemeProvider.kt │ │ │ │ ├── ThermalBrightness.java │ │ │ │ ├── UseOriginalAnimation.java │ │ │ │ ├── VolumeDefaultStream.java │ │ │ │ ├── VolumeDisableSafe.java │ │ │ │ ├── VolumeFirstPress.java │ │ │ │ ├── VolumeMediaSteps.kt │ │ │ │ ├── VolumeSeparateControl.java │ │ │ │ ├── VolumeSteps.java │ │ │ │ ├── corepatch │ │ │ │ │ ├── BypassSignCheckForT.kt │ │ │ │ │ ├── CorePatchForR.java │ │ │ │ │ ├── CorePatchForS.java │ │ │ │ │ ├── CorePatchForT.java │ │ │ │ │ ├── CorePatchForU.java │ │ │ │ │ ├── ReturnConstant.java │ │ │ │ │ └── XposedHelper.java │ │ │ │ ├── display │ │ │ │ │ ├── AutoBrightness.java │ │ │ │ │ ├── DisplayCutout.kt │ │ │ │ │ └── ToastTime.java │ │ │ │ ├── freeform │ │ │ │ │ └── OpenAppInFreeForm.java │ │ │ │ ├── mipad │ │ │ │ │ ├── IgnoreStylusKeyGesture.kt │ │ │ │ │ ├── NoMagicPointer.kt │ │ │ │ │ ├── RemoveStylusBluetoothRestriction.kt │ │ │ │ │ ├── RestoreEsc.kt │ │ │ │ │ └── SetGestureNeedFingerNum.kt │ │ │ │ └── network │ │ │ │ │ ├── DualNRSupport.kt │ │ │ │ │ ├── DualSASupport.kt │ │ │ │ │ ├── N1Band.kt │ │ │ │ │ ├── N28Band.kt │ │ │ │ │ └── N5N8Band.kt │ │ │ │ ├── systemsettings │ │ │ │ ├── AddMiuiPlusEntry.java │ │ │ │ ├── AppsFreezerEnable.java │ │ │ │ ├── EnableFoldArea.kt │ │ │ │ ├── EnablePadArea.kt │ │ │ │ ├── EnableSpeedMode.java │ │ │ │ ├── InternationalBuild.java │ │ │ │ ├── NewNFCPage.java │ │ │ │ ├── NoveltyHaptic.kt │ │ │ │ ├── QuickManageOverlayPermission.kt │ │ │ │ ├── QuickManageUnknownAppSources.kt │ │ │ │ ├── UnLockAreaScreenshot.kt │ │ │ │ ├── UnlockTaplusForSettings.kt │ │ │ │ ├── ViewWifiPasswordHook.java │ │ │ │ ├── VoipAssistantController.java │ │ │ │ └── aiimage │ │ │ │ │ ├── UnlockAi.java │ │ │ │ │ ├── UnlockMemc.java │ │ │ │ │ └── UnlockSuperResolution.java │ │ │ │ ├── systemui │ │ │ │ ├── AutoCollapse.java │ │ │ │ ├── BatteryIndicator.java │ │ │ │ ├── BluetoothRestrict.java │ │ │ │ ├── ChargeAnimationStyle.java │ │ │ │ ├── ClockCenterHook.java │ │ │ │ ├── EnableVolumeBlur.kt │ │ │ │ ├── HideNavigationBar.java │ │ │ │ ├── MiuiGxzwSize.java │ │ │ │ ├── MonetThemeOverlay.java │ │ │ │ ├── NotificationFix.java │ │ │ │ ├── NotificationFreeform.java │ │ │ │ ├── NotificationVolumeSeparateSlider.java │ │ │ │ ├── OriginChargeAnimation.java │ │ │ │ ├── QSDetailBackGround.java │ │ │ │ ├── QSLabelsHook.java │ │ │ │ ├── ShouldPlayUnmuteSoundHook.java │ │ │ │ ├── StatusBarActions.java │ │ │ │ ├── SwitchControlPanel.java │ │ │ │ ├── UseNativeRecents.java │ │ │ │ ├── VolumeTimerValuesHook.java │ │ │ │ ├── controlcenter │ │ │ │ │ ├── AddBlurEffectToNotificationView.kt │ │ │ │ │ ├── BluetoothTileStyle.java │ │ │ │ │ ├── CCGrid.kt │ │ │ │ │ ├── CompactNotificationsHook.kt │ │ │ │ │ ├── ControlCenterStyle.kt │ │ │ │ │ ├── FiveGTile.java │ │ │ │ │ ├── FixMediaControlPanel.kt │ │ │ │ │ ├── FlashLight.java │ │ │ │ │ ├── GmsTile.java │ │ │ │ │ ├── MuteVisibleNotifications.java │ │ │ │ │ ├── NotificationWeather.kt │ │ │ │ │ ├── NotificationWeatherNew.kt │ │ │ │ │ ├── NotificationWeatherOld.kt │ │ │ │ │ ├── QQSGrid.kt │ │ │ │ │ ├── QQSGridOld.java │ │ │ │ │ ├── QSControlDetailBackgroundAlpha.kt │ │ │ │ │ ├── QSGrid.kt │ │ │ │ │ ├── QSGridLabels.java │ │ │ │ │ ├── QSGridOld.java │ │ │ │ │ ├── RedirectToNotificationChannelSetting.kt │ │ │ │ │ ├── SmartHome.java │ │ │ │ │ ├── SunlightMode.java │ │ │ │ │ └── SwitchCCAndNotification.java │ │ │ │ ├── lockscreen │ │ │ │ │ ├── AddBlurEffectToLockScreen.kt │ │ │ │ │ ├── BlurButton.kt │ │ │ │ │ ├── ChargingCVP.kt │ │ │ │ │ ├── ClockDisplaySeconds.kt │ │ │ │ │ ├── ForceClockUseSystemFontsHook.kt │ │ │ │ │ ├── HideLockScreenHint.kt │ │ │ │ │ ├── HideLockScreenStatusBar.kt │ │ │ │ │ ├── HideLockscreenZenMode.kt │ │ │ │ │ ├── LockScreenDoubleTapToSleep.kt │ │ │ │ │ ├── NoPassword.kt │ │ │ │ │ ├── RemoveCamera.kt │ │ │ │ │ ├── RemoveSmartScreen.kt │ │ │ │ │ └── ScramblePIN.java │ │ │ │ ├── navigation │ │ │ │ │ ├── HandleLineCustom.kt │ │ │ │ │ └── NavigationCustom.java │ │ │ │ ├── plugin │ │ │ │ │ ├── EnableVolumeBlur.java │ │ │ │ │ ├── HideDeviceControlEntry.java │ │ │ │ │ ├── HideMiPlayEntry.java │ │ │ │ │ ├── HideMiSmartHubEntry.java │ │ │ │ │ └── PluginHelper.java │ │ │ │ └── statusbar │ │ │ │ │ ├── BigMobileNetworkType.java │ │ │ │ │ ├── DisplayHardwareDetail.java │ │ │ │ │ ├── DoubleTapToSleep.kt │ │ │ │ │ ├── DualRowSignalHook.java │ │ │ │ │ ├── HideStatusBarBeforeScreenshot.java │ │ │ │ │ ├── MobileNetwork.java │ │ │ │ │ ├── NotificationIconColumns.kt │ │ │ │ │ ├── SelectiveHideIconForAlarmClock.java │ │ │ │ │ ├── WifiStandard.java │ │ │ │ │ ├── clock │ │ │ │ │ ├── TimeCustomization.kt │ │ │ │ │ └── TimeStyle.kt │ │ │ │ │ ├── icon │ │ │ │ │ ├── all │ │ │ │ │ │ ├── BatteryStyle.kt │ │ │ │ │ │ ├── BluetoothIcon.java │ │ │ │ │ │ ├── DataSaverIcon.java │ │ │ │ │ │ ├── HideBatteryIcon.kt │ │ │ │ │ │ ├── HideVoWiFiIcon.kt │ │ │ │ │ │ ├── IconsFromSystemManager.kt │ │ │ │ │ │ ├── StatusBarIcon.kt │ │ │ │ │ │ ├── StatusBarIconPositionAdjust.java │ │ │ │ │ │ ├── StatusBarSimIcon.kt │ │ │ │ │ │ └── WifiNetworkIndicator.kt │ │ │ │ │ └── t │ │ │ │ │ │ └── UseNewHD.kt │ │ │ │ │ ├── layout │ │ │ │ │ └── StatusBarLayout.kt │ │ │ │ │ ├── model │ │ │ │ │ ├── MobileTypeSingleHook.kt │ │ │ │ │ └── MobileTypeTextCustom.kt │ │ │ │ │ └── network │ │ │ │ │ ├── NetworkSpeed.kt │ │ │ │ │ ├── NetworkSpeedSec.kt │ │ │ │ │ ├── NetworkSpeedSpacing.kt │ │ │ │ │ ├── NetworkSpeedStyle.kt │ │ │ │ │ ├── StatusBarNoNetSpeedSep.kt │ │ │ │ │ └── s │ │ │ │ │ └── NetworkSpeedWidth.kt │ │ │ │ ├── thememanager │ │ │ │ ├── DisableThemeAd.java │ │ │ │ ├── DisableThemeAdNew.kt │ │ │ │ ├── EnableFoldTheme.java │ │ │ │ ├── EnablePadTheme.java │ │ │ │ ├── ThemeCrackNew.kt │ │ │ │ └── VersionCodeModify.java │ │ │ │ ├── tsmclient │ │ │ │ └── AutoNfc.kt │ │ │ │ ├── updater │ │ │ │ ├── DeviceModify.kt │ │ │ │ ├── VabUpdate.kt │ │ │ │ ├── VersionCodeModify.java │ │ │ │ └── VersionCodeNew.kt │ │ │ │ ├── various │ │ │ │ ├── CollapseMiuiTitle.java │ │ │ │ ├── DialogBlur.java │ │ │ │ ├── DialogCustom.java │ │ │ │ ├── DialogGravity.java │ │ │ │ ├── MiuiAppNoOverScroll.java │ │ │ │ ├── NoAccessDeviceLogsRequest.kt │ │ │ │ ├── NotificationBlur.java │ │ │ │ ├── UnlockIme.kt │ │ │ │ └── UnlockSuperClipboard.kt │ │ │ │ ├── voiceassist │ │ │ │ └── UseThirdPartyBrowser.kt │ │ │ │ └── weather │ │ │ │ └── SetDeviceLevel.java │ │ │ ├── prefs │ │ │ └── PreferenceHeader.java │ │ │ ├── provider │ │ │ └── SharedPrefsProvider.java │ │ │ ├── ui │ │ │ ├── CustomHookActivity.java │ │ │ ├── HideAppActivity.java │ │ │ ├── MainActivity.java │ │ │ ├── ModuleSettingsActivity.java │ │ │ ├── SubPickerActivity.java │ │ │ ├── SubSettings.java │ │ │ ├── base │ │ │ │ ├── BaseSettingsActivity.java │ │ │ │ ├── BaseSettingsProxy.java │ │ │ │ ├── SettingsActivity.java │ │ │ │ └── SettingsProxy.java │ │ │ ├── customhook │ │ │ │ └── CustomHookConfigActivity.java │ │ │ ├── fragment │ │ │ │ ├── AboutFragment.kt │ │ │ │ ├── AiAsstFragment.java │ │ │ │ ├── AodFragment.java │ │ │ │ ├── BarrageFragment.java │ │ │ │ ├── BrowserFragment.java │ │ │ │ ├── CameraFragment.java │ │ │ │ ├── ClockFragment.java │ │ │ │ ├── ContentExtensionFragment.java │ │ │ │ ├── CreationFragment.java │ │ │ │ ├── DownloadsFragment.java │ │ │ │ ├── FileExplorerFragment.java │ │ │ │ ├── GalleryFragment.java │ │ │ │ ├── GuardProviderFragment.java │ │ │ │ ├── HomeFragment.java │ │ │ │ ├── InCallUiFragment.java │ │ │ │ ├── JoyoseFragment.java │ │ │ │ ├── LbeFragment.java │ │ │ │ ├── MainFragment.java │ │ │ │ ├── MarketFragment.java │ │ │ │ ├── MediaEditorFragment.java │ │ │ │ ├── MiLinkFragment.java │ │ │ │ ├── MiSettingsFragment.java │ │ │ │ ├── MiShareFragment.java │ │ │ │ ├── MiWallpaperFragment.java │ │ │ │ ├── MirrorFragment.java │ │ │ │ ├── MiuiPackageInstallerFragment.java │ │ │ │ ├── MmsFragment.java │ │ │ │ ├── ModuleSettingsFragment.java │ │ │ │ ├── MtbFragment.java │ │ │ │ ├── MusicFragment.java │ │ │ │ ├── NetworkBoostFragment.java │ │ │ │ ├── NfcFragment.java │ │ │ │ ├── PersonalAssistantFragment.java │ │ │ │ ├── PhoneFragment.java │ │ │ │ ├── PowerKeeperFragment.java │ │ │ │ ├── ScannerFragment.java │ │ │ │ ├── ScreenRecorderFragment.java │ │ │ │ ├── ScreenShotFragment.java │ │ │ │ ├── SecurityCenterFragment.java │ │ │ │ ├── SystemFrameworkFragment.java │ │ │ │ ├── SystemSettingsFragment.java │ │ │ │ ├── SystemUIFragment.java │ │ │ │ ├── ThemeManagerFragment.java │ │ │ │ ├── TsmClientFragment.java │ │ │ │ ├── UpdaterFragment.java │ │ │ │ ├── VariousFragment.java │ │ │ │ ├── WeatherFragment.java │ │ │ │ ├── about │ │ │ │ │ ├── AboutContributerFragment.java │ │ │ │ │ └── AboutUseFragment.java │ │ │ │ ├── base │ │ │ │ │ ├── BasePreferenceFragment.java │ │ │ │ │ └── SettingsPreferenceFragment.java │ │ │ │ ├── framework │ │ │ │ │ ├── DisplaySettings.java │ │ │ │ │ ├── FreeFormSettings.java │ │ │ │ │ ├── NetworkSettings.java │ │ │ │ │ ├── OtherSettings.java │ │ │ │ │ └── VolumeSettings.java │ │ │ │ ├── home │ │ │ │ │ ├── HomeDockSettings.java │ │ │ │ │ ├── HomeDrawerSettings.java │ │ │ │ │ ├── HomeFolderSettings.java │ │ │ │ │ ├── HomeGestureSettings.java │ │ │ │ │ ├── HomeLayoutSettings.java │ │ │ │ │ ├── HomeOtherSettings.java │ │ │ │ │ ├── HomeRecentSettings.java │ │ │ │ │ ├── HomeTitleAnimSettings.java │ │ │ │ │ ├── HomeTitleSettings.java │ │ │ │ │ ├── HomeWidgetSettings.java │ │ │ │ │ └── anim │ │ │ │ │ │ ├── HomeTitleAnim1Settings.java │ │ │ │ │ │ ├── HomeTitleAnim2Settings.java │ │ │ │ │ │ ├── HomeTitleAnim3Settings.java │ │ │ │ │ │ ├── HomeTitleAnim4Settings.java │ │ │ │ │ │ ├── HomeTitleAnim5Settings.java │ │ │ │ │ │ ├── HomeTitleAnim6Settings.java │ │ │ │ │ │ ├── HomeTitleAnim7Settings.java │ │ │ │ │ │ └── HomeTitleAnim8Settings.java │ │ │ │ ├── settings │ │ │ │ │ └── SafeModeFragment.java │ │ │ │ ├── sub │ │ │ │ │ ├── AppPicker.java │ │ │ │ │ ├── CustomBackgroundSettings.java │ │ │ │ │ └── MultiActionSettings.java │ │ │ │ ├── systemui │ │ │ │ │ ├── ControlCenterSettings.java │ │ │ │ │ ├── LockScreenSettings.java │ │ │ │ │ ├── NavigationSettings.java │ │ │ │ │ ├── StatusBarSettings.java │ │ │ │ │ ├── SystemUIOtherSettings.java │ │ │ │ │ └── statusbar │ │ │ │ │ │ ├── BatteryDetailIndicatorSettings.java │ │ │ │ │ │ ├── BatteryIndicatorSettings.java │ │ │ │ │ │ ├── BatteryStyleSettings.java │ │ │ │ │ │ ├── ClockIndicatorSettings.java │ │ │ │ │ │ ├── DoubleLineNetworkSettings.java │ │ │ │ │ │ ├── IconManageSettings.java │ │ │ │ │ │ ├── MobileNetworkTypeSettings.java │ │ │ │ │ │ └── NetworkSpeedIndicatorSettings.java │ │ │ │ └── various │ │ │ │ │ ├── AOSPSettings.java │ │ │ │ │ ├── AlertDialogSettings.java │ │ │ │ │ └── MiPadSettings.java │ │ │ └── various │ │ │ │ ├── LocationDataActivity.java │ │ │ │ ├── LocationSimulationActivity.java │ │ │ │ └── fragment │ │ │ │ └── VariousFragment.java │ │ │ ├── utils │ │ │ ├── BackupUtils.java │ │ │ ├── BitmapUtils.java │ │ │ ├── BlurUtils.java │ │ │ ├── ColorUtils.kt │ │ │ ├── ColorUtilsStatic.java │ │ │ ├── CtaUtils.java │ │ │ ├── DexKit.kt │ │ │ ├── DialogHelper.java │ │ │ ├── DisplayUtils.java │ │ │ ├── Helpers.java │ │ │ ├── HookUtils.kt │ │ │ ├── KotlinXposedHelper.kt │ │ │ ├── LogcatHelper.java │ │ │ ├── MathUtils.java │ │ │ ├── PrefsMap.java │ │ │ ├── PrefsUtils.java │ │ │ ├── PropertyUtils.kt │ │ │ ├── ResourcesHook.java │ │ │ ├── SearchHelper.java │ │ │ ├── SettingLauncher.java │ │ │ ├── SettingLauncherHelper.java │ │ │ ├── ShakeManager.java │ │ │ ├── ShellUtils.java │ │ │ ├── SystemProperties.kt │ │ │ ├── TileUtils.java │ │ │ ├── ToastHelper.java │ │ │ ├── XposedUtils.java │ │ │ ├── api │ │ │ │ ├── LinQiqiApis.kt │ │ │ │ ├── VoyagerApis.kt │ │ │ │ └── loadClassByLazy.kt │ │ │ ├── devicesdk │ │ │ │ ├── AppUtils.kt │ │ │ │ └── SystemSDK.kt │ │ │ └── log │ │ │ │ ├── AndroidLogUtils.java │ │ │ │ ├── XposedLogUtils.java │ │ │ │ └── XposedLogUtilsKt.kt │ │ │ └── view │ │ │ ├── BatteryIndicatorView.java │ │ │ ├── BlurFrameLayout.java │ │ │ ├── CircleImageView.java │ │ │ ├── MultipleChoiceView.java │ │ │ ├── RestartAlertDialog.java │ │ │ ├── SpinnerEx.java │ │ │ ├── WeatherData.kt │ │ │ └── WeatherView.kt │ │ └── zhenxiang │ │ └── blur │ │ ├── BackgroundBlurDrawableExtensions.kt │ │ ├── BlurFrameLayout.kt │ │ ├── BlurLinearLayout.kt │ │ ├── SystemBlurController.kt │ │ ├── ViewExtensions.kt │ │ └── model │ │ └── CornerRadius.kt │ └── res │ ├── color │ ├── ic_small_window_color.xml │ ├── ic_small_window_color2.xml │ ├── ic_small_window_color3.xml │ ├── ic_small_window_color4.xml │ ├── ic_small_window_color5.xml │ └── visual_check_text_color.xml │ ├── drawable-v31 │ └── ic_launcher_foreground.xml │ ├── drawable │ ├── baseline_wb_sunny_24.xml │ ├── bubble_bar_pop_bg.xml │ ├── ic_aiasst.webp │ ├── ic_android_settings.xml │ ├── ic_aod.webp │ ├── ic_arrow_edit.xml │ ├── ic_ationbar_back.xml │ ├── ic_audio_system.xml │ ├── ic_browser.webp │ ├── ic_call.webp │ ├── ic_camera.webp │ ├── ic_cemiuiler_settings_v130.xml │ ├── ic_cemiuiler_settings_v140.xml │ ├── ic_clock.webp │ ├── ic_contentextension.webp │ ├── ic_control_center_5g_toggle_off.xml │ ├── ic_control_center_5g_toggle_on.xml │ ├── ic_control_center_gms_toggle_off.xml │ ├── ic_control_center_gms_toggle_on.xml │ ├── ic_creation.webp │ ├── ic_custom.webp │ ├── ic_default_icon.xml │ ├── ic_downloads.webp │ ├── ic_fileexplorer.webp │ ├── ic_gallery.webp │ ├── ic_guard_provider.webp │ ├── ic_guard_provider_new.webp │ ├── ic_home.webp │ ├── ic_launcher_foreground.xml │ ├── ic_lbe.webp │ ├── ic_lingqiqi.webp │ ├── ic_market.webp │ ├── ic_mediaeditor.webp │ ├── ic_milink.webp │ ├── ic_misettings.webp │ ├── ic_mishare.webp │ ├── ic_miui_plus.webp │ ├── ic_miui_volume_notification.xml │ ├── ic_miui_volume_notification_mute.xml │ ├── ic_miwallpaper.webp │ ├── ic_mms.webp │ ├── ic_moralnorm.webp │ ├── ic_mtb.webp │ ├── ic_music.webp │ ├── ic_package_installer.webp │ ├── ic_packageinstaller_background_dark.xml │ ├── ic_packageinstaller_background_light.xml │ ├── ic_personal_assistant.webp │ ├── ic_phone.webp │ ├── ic_powerkeeper.webp │ ├── ic_qs_tile_bg_disabled.xml │ ├── ic_qs_tile_bg_enabled.xml │ ├── ic_qs_tile_bg_warning.xml │ ├── ic_reboot_small.xml │ ├── ic_scanner.webp │ ├── ic_screenrecorder.webp │ ├── ic_screenshot.webp │ ├── ic_security_center.webp │ ├── ic_securityadd.webp │ ├── ic_settings.xml │ ├── ic_sevtinge.webp │ ├── ic_small_window.xml │ ├── ic_system_framework.webp │ ├── ic_system_framework_new.xml │ ├── ic_system_settings.webp │ ├── ic_system_ui.webp │ ├── ic_system_ui_new.xml │ ├── ic_theme_manager.webp │ ├── ic_tsmclient.webp │ ├── ic_updater.webp │ ├── ic_various.xml │ ├── ic_various_new.webp │ ├── ic_voyager.webp │ ├── ic_weather.webp │ ├── ic_yifeplayte.webp │ ├── shutdown_progress.xml │ ├── statusbar_signal_1_0.xml │ ├── statusbar_signal_1_0_dark.xml │ ├── statusbar_signal_1_0_dark_theme.webp │ ├── statusbar_signal_1_0_dark_thick.xml │ ├── statusbar_signal_1_0_theme.webp │ ├── statusbar_signal_1_0_thick.xml │ ├── statusbar_signal_1_0_tint.xml │ ├── statusbar_signal_1_0_tint_thick.xml │ ├── statusbar_signal_1_1.xml │ ├── statusbar_signal_1_1_dark.xml │ ├── statusbar_signal_1_1_dark_theme.webp │ ├── statusbar_signal_1_1_dark_thick.xml │ ├── statusbar_signal_1_1_theme.webp │ ├── statusbar_signal_1_1_thick.xml │ ├── statusbar_signal_1_1_tint.xml │ ├── statusbar_signal_1_1_tint_thick.xml │ ├── statusbar_signal_1_2.xml │ ├── statusbar_signal_1_2_dark.xml │ ├── statusbar_signal_1_2_dark_theme.webp │ ├── statusbar_signal_1_2_dark_thick.xml │ ├── statusbar_signal_1_2_theme.webp │ ├── statusbar_signal_1_2_thick.xml │ ├── statusbar_signal_1_2_tint.xml │ ├── statusbar_signal_1_2_tint_thick.xml │ ├── statusbar_signal_1_3.xml │ ├── statusbar_signal_1_3_dark.xml │ ├── statusbar_signal_1_3_dark_theme.webp │ ├── statusbar_signal_1_3_dark_thick.xml │ ├── statusbar_signal_1_3_theme.webp │ ├── statusbar_signal_1_3_thick.xml │ ├── statusbar_signal_1_3_tint.xml │ ├── statusbar_signal_1_3_tint_thick.xml │ ├── statusbar_signal_1_4.xml │ ├── statusbar_signal_1_4_dark.xml │ ├── statusbar_signal_1_4_dark_theme.webp │ ├── statusbar_signal_1_4_dark_thick.xml │ ├── statusbar_signal_1_4_theme.webp │ ├── statusbar_signal_1_4_thick.xml │ ├── statusbar_signal_1_4_tint.xml │ ├── statusbar_signal_1_4_tint_thick.xml │ ├── statusbar_signal_1_5.xml │ ├── statusbar_signal_1_5_dark.xml │ ├── statusbar_signal_1_5_dark_theme.webp │ ├── statusbar_signal_1_5_dark_thick.xml │ ├── statusbar_signal_1_5_theme.webp │ ├── statusbar_signal_1_5_thick.xml │ ├── statusbar_signal_1_5_tint.xml │ ├── statusbar_signal_1_5_tint_thick.xml │ ├── statusbar_signal_2_0.xml │ ├── statusbar_signal_2_0_dark.xml │ ├── statusbar_signal_2_0_dark_theme.webp │ ├── statusbar_signal_2_0_dark_thick.xml │ ├── statusbar_signal_2_0_theme.webp │ ├── statusbar_signal_2_0_thick.xml │ ├── statusbar_signal_2_0_tint.xml │ ├── statusbar_signal_2_0_tint_thick.xml │ ├── statusbar_signal_2_1.xml │ ├── statusbar_signal_2_1_dark.xml │ ├── statusbar_signal_2_1_dark_theme.webp │ ├── statusbar_signal_2_1_dark_thick.xml │ ├── statusbar_signal_2_1_theme.webp │ ├── statusbar_signal_2_1_thick.xml │ ├── statusbar_signal_2_1_tint.xml │ ├── statusbar_signal_2_1_tint_thick.xml │ ├── statusbar_signal_2_2.xml │ ├── statusbar_signal_2_2_dark.xml │ ├── statusbar_signal_2_2_dark_theme.webp │ ├── statusbar_signal_2_2_dark_thick.xml │ ├── statusbar_signal_2_2_theme.webp │ ├── statusbar_signal_2_2_thick.xml │ ├── statusbar_signal_2_2_tint.xml │ ├── statusbar_signal_2_2_tint_thick.xml │ ├── statusbar_signal_2_3.xml │ ├── statusbar_signal_2_3_dark.xml │ ├── statusbar_signal_2_3_dark_theme.webp │ ├── statusbar_signal_2_3_dark_thick.xml │ ├── statusbar_signal_2_3_theme.webp │ ├── statusbar_signal_2_3_thick.xml │ ├── statusbar_signal_2_3_tint.xml │ ├── statusbar_signal_2_3_tint_thick.xml │ ├── statusbar_signal_2_4.xml │ ├── statusbar_signal_2_4_dark.xml │ ├── statusbar_signal_2_4_dark_theme.webp │ ├── statusbar_signal_2_4_dark_thick.xml │ ├── statusbar_signal_2_4_theme.webp │ ├── statusbar_signal_2_4_thick.xml │ ├── statusbar_signal_2_4_tint.xml │ ├── statusbar_signal_2_4_tint_thick.xml │ ├── statusbar_signal_2_5.xml │ ├── statusbar_signal_2_5_dark.xml │ ├── statusbar_signal_2_5_dark_theme.webp │ ├── statusbar_signal_2_5_dark_thick.xml │ ├── statusbar_signal_2_5_theme.webp │ ├── statusbar_signal_2_5_thick.xml │ ├── statusbar_signal_2_5_tint.xml │ └── statusbar_signal_2_5_tint_thick.xml │ ├── layout │ ├── activity_about.xml │ ├── activity_custom_hook.xml │ ├── activity_custom_hook_config.xml │ ├── activity_location.xml │ ├── fragment_app_picker.xml │ ├── fragment_common_padded.xml │ ├── frame_content.xml │ ├── item_app_list.xml │ ├── item_location.xml │ ├── item_mutiplechoice.xml │ ├── item_search_result.xml │ ├── location_edit_dialog.xml │ ├── preference_custom_blur_dark_mode.xml │ ├── preference_custom_blur_light_mode.xml │ ├── preference_dialog_edittext.xml │ ├── preference_divider.xml │ ├── preference_header.xml │ ├── preference_round_layout.xml │ ├── preference_seekbar_no_padding.xml │ ├── preference_text.xml │ ├── settings_main.xml │ ├── statusbar_text_icon.xml │ └── view_mutiplechoice.xml │ ├── menu │ ├── menu_location.xml │ ├── menu_location_simulation.xml │ ├── menu_main.xml │ └── menu_system_framework_other.xml │ ├── mipmap-anydpi-v26 │ └── ic_launcher.xml │ ├── resources.properties │ ├── values-ja-rJP │ └── strings.xml │ ├── values-night-v31 │ └── colors.xml │ ├── values-night │ └── themes.xml │ ├── values-pt-rBR │ └── strings.xml │ ├── values-ru-rRU │ └── strings.xml │ ├── values-tr-rTR │ └── strings.xml │ ├── values-v31 │ └── colors.xml │ ├── values-vi-rVN │ └── strings.xml │ ├── values-zh-rCN │ └── strings.xml │ ├── values-zh-rHK │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values │ ├── arrays.xml │ ├── attrs.xml │ ├── bools.xml │ ├── colors.xml │ ├── dimens.xml │ ├── integer.xml │ ├── strings.xml │ └── themes.xml │ └── xml │ ├── aiasst.xml │ ├── aod.xml │ ├── backup_rules.xml │ ├── barrage.xml │ ├── browser.xml │ ├── camera.xml │ ├── clock.xml │ ├── content_extension.xml │ ├── creation.xml │ ├── custom_background.xml │ ├── data_extraction_rules.xml │ ├── downloads.xml │ ├── fileexplorer.xml │ ├── framework.xml │ ├── framework_display.xml │ ├── framework_freeform.xml │ ├── framework_other.xml │ ├── framework_phone.xml │ ├── framework_volume.xml │ ├── gallery.xml │ ├── guard_provider.xml │ ├── home.xml │ ├── home_dock.xml │ ├── home_drawer.xml │ ├── home_folder.xml │ ├── home_gesture.xml │ ├── home_layout.xml │ ├── home_multi_action.xml │ ├── home_other.xml │ ├── home_recent.xml │ ├── home_title.xml │ ├── home_title_anim.xml │ ├── home_title_anim_1.xml │ ├── home_title_anim_2.xml │ ├── home_title_anim_3.xml │ ├── home_title_anim_4.xml │ ├── home_title_anim_5.xml │ ├── home_title_anim_6.xml │ ├── home_title_anim_7.xml │ ├── home_title_anim_8.xml │ ├── home_widget.xml │ ├── incallui.xml │ ├── joyose.xml │ ├── lbe_security.xml │ ├── market.xml │ ├── mediaeditor.xml │ ├── mi_settings.xml │ ├── milink.xml │ ├── mirror.xml │ ├── mishare.xml │ ├── miwallpaper.xml │ ├── mms.xml │ ├── mtb.xml │ ├── music.xml │ ├── networkboost.xml │ ├── nfc.xml │ ├── package_installer.xml │ ├── personal_assistant.xml │ ├── phone.xml │ ├── powerkeeper.xml │ ├── prefs_about.xml │ ├── prefs_about_contributor.xml │ ├── prefs_about_use.xml │ ├── prefs_main.xml │ ├── prefs_settings.xml │ ├── scanner.xml │ ├── screenrecorder.xml │ ├── screenshot.xml │ ├── security_center.xml │ ├── settings_safe_mode.xml │ ├── system_settings.xml │ ├── system_ui.xml │ ├── system_ui_control_center.xml │ ├── system_ui_lock_screen.xml │ ├── system_ui_navigation.xml │ ├── system_ui_other.xml │ ├── system_ui_status_bar.xml │ ├── system_ui_status_bar_battery_indicator.xml │ ├── system_ui_status_bar_battery_styles.xml │ ├── system_ui_status_bar_clock_indicator.xml │ ├── system_ui_status_bar_doubleline_network.xml │ ├── system_ui_status_bar_hardware_detail_indicator.xml │ ├── system_ui_status_bar_icon_manage.xml │ ├── system_ui_status_bar_mobile_network_type.xml │ ├── system_ui_status_bar_network_speed_indicator.xml │ ├── theme_manager.xml │ ├── tsmclient.xml │ ├── updater.xml │ ├── various.xml │ ├── various_aosp.xml │ ├── various_dialog.xml │ ├── various_location_simulation.xml │ ├── various_mipad.xml │ └── weather.xml ├── build.gradle ├── config.gradle ├── crowdin.yml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── hidden-api ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro └── src │ └── main │ └── java │ ├── android │ └── view │ │ └── ViewRootImpl.java │ ├── com │ └── android │ │ └── internal │ │ └── graphics │ │ └── drawable │ │ └── BackgroundBlurDrawable.java │ └── miui │ ├── app │ └── MiuiFreeFormManager.java │ └── drm │ ├── DrmManager.kt │ └── ThemeReceiver.kt ├── imgs └── icon.png ├── settings.gradle └── signing.properties.example /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 4 7 | indent_style = space 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.xml] 12 | insert_final_newline = false 13 | 14 | [*.yml] 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto eol=lf 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/FEATURE-REQUEST.yml: -------------------------------------------------------------------------------- 1 | name: "💡 需求" 2 | description: 新功能需求 3 | title: "💡 [需求] <标题>" 4 | labels: [ 5 | "enhancement" 6 | ] 7 | body: 8 | - type: textarea 9 | id: requirement 10 | attributes: 11 | label: "需求内容" 12 | description: "简单说明你的需求" 13 | placeholder: 请添加... 14 | validations: 15 | required: true 16 | - type: textarea 17 | id: refs 18 | attributes: 19 | label: "实现思路&截图" 20 | description: 如果可能,请提供实现思路或者相关图片 21 | placeholder: "![图片描述](图片链接)" 22 | validations: 23 | required: false 24 | - type: textarea 25 | id: basic_example 26 | attributes: 27 | label: "简单例子" 28 | description: 说明该功能的基本示例 29 | placeholder: 为...添加...以便... 30 | validations: 31 | required: true 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/MIGRATION-REQUEST.yml: -------------------------------------------------------------------------------- 1 | name: "🔌 移植" 2 | description: 新功能需求 3 | title: "🔌 [移植] <标题>" 4 | labels: [ 5 | "enhancement" 6 | ] 7 | body: 8 | - type: input 9 | id: repo 10 | attributes: 11 | label: "仓库地址" 12 | description: "提供仓库地址以便我们更快地工作" 13 | placeholder: "https://github.com/" 14 | validations: 15 | required: false 16 | - type: textarea 17 | id: requirement 18 | attributes: 19 | label: "移植内容" 20 | description: "简单说明需要移植的内容" 21 | placeholder: 移植...软件的...功能 22 | validations: 23 | required: true 24 | - type: textarea 25 | id: feature_desc 26 | attributes: 27 | label: "相关描述&截图" 28 | description: 如果可能,请提供相关功能描述及图片 29 | placeholder: "![图片描述](图片链接)" 30 | validations: 31 | required: false 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # To get started with Dependabot version updates, you'll need to specify which 2 | # package ecosystems to update and where the package manifests are located. 3 | # Please see the documentation for all configuration options: 4 | # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates 5 | 6 | version: 2 7 | updates: 8 | - package-ecosystem: "gradle" 9 | directory: "/" 10 | schedule: 11 | interval: "daily" 12 | 13 | - package-ecosystem: "github-actions" 14 | directory: "/" 15 | schedule: 16 | interval: "daily" 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | .idea 5 | .DS_Store 6 | /build 7 | /captures 8 | .externalNativeBuild 9 | .cxx 10 | local.properties 11 | /app/release 12 | /app/beta 13 | /app/canary 14 | /app/debug 15 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/libs/animation-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/libs/animation-release.aar -------------------------------------------------------------------------------- /app/libs/appcompat-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/libs/appcompat-release.aar -------------------------------------------------------------------------------- /app/libs/core-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/libs/core-release.aar -------------------------------------------------------------------------------- /app/libs/haptic-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/libs/haptic-release.aar -------------------------------------------------------------------------------- /app/libs/hyperceiler_expansion_packs-debug.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/libs/hyperceiler_expansion_packs-debug.aar -------------------------------------------------------------------------------- /app/libs/miui-framework.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/libs/miui-framework.jar -------------------------------------------------------------------------------- /app/libs/miui.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/libs/miui.jar -------------------------------------------------------------------------------- /app/libs/preference-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/libs/preference-release.aar -------------------------------------------------------------------------------- /app/libs/smooth-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/libs/smooth-release.aar -------------------------------------------------------------------------------- /app/libs/springback-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/libs/springback-release.aar -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -keep class com.sevtinge.cemiuiler.XposedInit 2 | -keep class com.sevtinge.cemiuiler.module.app.SystemFrameworkForCorePatch 3 | -keep class moralnorm.**{*;} 4 | -keep class com.sevtinge.cemiuiler.utils.Helpers{boolean isModuleActive;} 5 | -keep class com.sevtinge.cemiuiler.utils.Helpers{int XposedVersion;} 6 | -keep class * extends com.sevtinge.cemiuiler.module.base.BaseHook 7 | -keep class com.sevtinge.cemiuiler.ui.HideAppActivity 8 | -keep class * extends com.sevtinge.cemiuiler.ui.fragment.base.* 9 | -keep class miui.drm.**{*;} 10 | -dontwarn android.app.ActivityTaskManager$RootTaskInfo 11 | -dontwarn miui.app.MiuiFreeFormManager$MiuiFreeFormStackInfo 12 | -dontwarn com.android.internal.view.menu.MenuBuilder 13 | -allowaccessmodification 14 | -overloadaggressively 15 | -------------------------------------------------------------------------------- /app/src/main/assets/xposed_init: -------------------------------------------------------------------------------- 1 | com.sevtinge.cemiuiler.XposedInit -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/Application.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler; 2 | 3 | import android.content.Context; 4 | import android.os.Build; 5 | 6 | import com.sevtinge.cemiuiler.utils.PrefsUtils; 7 | 8 | public class Application extends android.app.Application { 9 | 10 | @Override 11 | protected void attachBaseContext(Context base) { 12 | PrefsUtils.mSharedPreferences = PrefsUtils.getSharedPrefs(base); 13 | super.attachBaseContext(base); 14 | } 15 | 16 | @Override 17 | public void onCreate() { 18 | super.onCreate(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/callback/IAppSelectCallback.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.callback; 2 | 3 | public interface IAppSelectCallback { 4 | 5 | void sendMsgToActivity(byte[] appIcon, String appName, String appPackageName, String appVersion, String appActivityName); 6 | 7 | String getMsgFromActivity(String s); 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/data/AppData.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.data; 2 | 3 | import android.graphics.Bitmap; 4 | 5 | public class AppData { 6 | 7 | public int user = 0; 8 | public Bitmap icon; 9 | public String label; 10 | public String packageName; 11 | public String activityName; 12 | public String versionName; 13 | public String versionCode; 14 | public boolean isSystemApp; 15 | public boolean enabled; 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/data/ModData.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.data; 2 | 3 | public class ModData { 4 | public String title; 5 | public String breadcrumbs; 6 | public String key; 7 | public ModCat cat; 8 | public String sub; 9 | public int order; 10 | public String fragment; 11 | public int catTitleResId; 12 | 13 | public enum ModCat { 14 | pref_key_system, 15 | pref_key_launcher, 16 | pref_key_controls, 17 | pref_key_various 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/AiAsst.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.aiasst.AiCaptions; 5 | 6 | 7 | public class AiAsst extends BaseModule { 8 | 9 | @Override 10 | public void handleLoadPackage() { 11 | initHook(new AiCaptions(), mPrefsMap.getBoolean("aiasst_ai_captions")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/Aod.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.hook.aod.UnlockAlwaysOnDisplay; 4 | import com.sevtinge.cemiuiler.module.base.BaseModule; 5 | 6 | public class Aod extends BaseModule { 7 | @Override 8 | public void handleLoadPackage() { 9 | initHook(UnlockAlwaysOnDisplay.INSTANCE, mPrefsMap.getBoolean("aod_unlock_always_on_display")); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/Barrage.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.hook.barrage.*; 4 | import com.sevtinge.cemiuiler.module.base.BaseModule; 5 | 6 | public class Barrage extends BaseModule { 7 | @Override 8 | public void handleLoadPackage() { 9 | initHook(AnyBarrage.INSTANCE, mPrefsMap.getBoolean("barrage_any_barrage")); 10 | initHook(CustomBarrageLength.INSTANCE, mPrefsMap.getInt("barrage_custom_barrage_length", 36) != 36); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/Clock.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.clock.EnableHourGlass; 5 | 6 | public class Clock extends BaseModule { 7 | 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(new EnableHourGlass(), mPrefsMap.getBoolean("clock_enable_hour_glass")); 11 | } 12 | } 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/Creation.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.creation.UnlockCreation; 5 | import com.sevtinge.cemiuiler.module.hook.various.UnlockSuperClipboard; 6 | 7 | public class Creation extends BaseModule { 8 | 9 | @Override 10 | public void handleLoadPackage() { 11 | initHook(UnlockCreation.INSTANCE, mPrefsMap.getBoolean("creation_unlock_enable")); 12 | initHook(UnlockSuperClipboard.INSTANCE, mPrefsMap.getBoolean("various_super_clipboard_enable")); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/Downloads.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.downloads.FuckXlDownload; 5 | 6 | public class Downloads extends BaseModule { 7 | 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(new FuckXlDownload(), mPrefsMap.getBoolean("various_fuck_xlDownload")); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/ExternalStorage.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.externalstorage.DisableFolderCantUse; 5 | 6 | public class ExternalStorage extends BaseModule { 7 | 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(new DisableFolderCantUse(), mPrefsMap.getBoolean("various_disable_folder_cantuse")); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/FileExplorer.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.fileexplorer.SelectName; 5 | import com.sevtinge.cemiuiler.module.hook.various.UnlockSuperClipboard; 6 | 7 | public class FileExplorer extends BaseModule { 8 | 9 | @Override 10 | public void handleLoadPackage() { 11 | initHook(SelectName.INSTANCE, mPrefsMap.getBoolean("file_explorer_can_selectable") || mPrefsMap.getBoolean("file_explorer_is_single_line")); 12 | initHook(UnlockSuperClipboard.INSTANCE, mPrefsMap.getBoolean("various_super_clipboard_enable")); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/GuardProvider.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.base.CloseHostDir; 5 | import com.sevtinge.cemiuiler.module.base.LoadHostDir; 6 | import com.sevtinge.cemiuiler.module.hook.guardprovider.DisableUploadAppListNew; 7 | 8 | public class GuardProvider extends BaseModule { 9 | @Override 10 | public void handleLoadPackage() { 11 | // dexKit load 12 | initHook(LoadHostDir.INSTANCE); 13 | initHook(DisableUploadAppListNew.INSTANCE, mPrefsMap.getBoolean("disable_upload_applist")); 14 | // dexKit finish 15 | initHook(CloseHostDir.INSTANCE); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/InCallUi.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.incallui.AnswerInHeadUp; 5 | import com.sevtinge.cemiuiler.module.hook.incallui.HideCrbt; 6 | 7 | public class InCallUi extends BaseModule { 8 | 9 | @Override 10 | public void handleLoadPackage() { 11 | initHook(new HideCrbt(), mPrefsMap.getBoolean("incallui_hide_crbt")); 12 | initHook(new AnswerInHeadUp(), mPrefsMap.getBoolean("incallui_answer_in_head_up")); 13 | } 14 | } 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/Lbe.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.lbe.DisableClipboardTip; 5 | 6 | public class Lbe extends BaseModule { 7 | 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(DisableClipboardTip.INSTANCE, mPrefsMap.getBoolean("lbe_clipboard_tip_toast")); 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/Market.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.market.DeviceModify; 5 | 6 | public class Market extends BaseModule { 7 | 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(new DeviceModify(), mPrefsMap.getStringAsInt("market_device_modify_new", 0) != 0);; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/MiLink.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.milink.UnlockMiShare; 5 | 6 | public class MiLink extends BaseModule { 7 | 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(new UnlockMiShare(), mPrefsMap.getBoolean("milink_unlock_mishare")); 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/MiWallpaper.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.miwallpaper.UnlockSuperWallpaper; 5 | 6 | public class MiWallpaper extends BaseModule { 7 | 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(new UnlockSuperWallpaper(), mPrefsMap.getBoolean("miwallpaper_unlock_super_wallpaper")); 11 | } 12 | } 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/Mirror.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.mirror.UnlockMiuiPlus; 5 | 6 | public class Mirror extends BaseModule { 7 | 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(new UnlockMiuiPlus(), mPrefsMap.getBoolean("mirror_unlock_miui_plus")); 11 | } 12 | } 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/Mtb.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.mtb.BypassAuthentication; 5 | import com.sevtinge.cemiuiler.module.hook.mtb.IsUserBuild; 6 | 7 | public class Mtb extends BaseModule { 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(BypassAuthentication.INSTANCE, mPrefsMap.getBoolean("mtb_auth")); 11 | initHook(IsUserBuild.INSTANCE, mPrefsMap.getBoolean("mtb_auth")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/Music.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.music.DisableAd; 5 | 6 | public class Music extends BaseModule { 7 | 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(new DisableAd(), mPrefsMap.getBoolean("music_disable_ad")); 11 | } 12 | } 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/NetworkBoost.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.networkboost.LinkTurboToast; 5 | 6 | public class NetworkBoost extends BaseModule { 7 | @Override 8 | public void handleLoadPackage() { 9 | initHook(new LinkTurboToast(), mPrefsMap.getBoolean("various_disable_link_turbo_toast")); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/Nfc.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.nfc.*; 5 | 6 | public class Nfc extends BaseModule { 7 | 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(new DisableSound(), mPrefsMap.getBoolean("nfc_disable_sound")); 11 | initHook(new AllowInformationScreen(), mPrefsMap.getBoolean("nfc_allow_information_screen")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/Notes.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.various.UnlockSuperClipboard; 5 | 6 | public class Notes extends BaseModule { 7 | 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(UnlockSuperClipboard.INSTANCE, mPrefsMap.getBoolean("various_super_clipboard_enable")); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/TsmClient.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.tsmclient.AutoNfc; 5 | 6 | public class TsmClient extends BaseModule { 7 | 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(AutoNfc.INSTANCE, mPrefsMap.getBoolean("tsmclient_auto_nfc")); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/VoiceAssist.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.base.CloseHostDir; 5 | import com.sevtinge.cemiuiler.module.base.LoadHostDir; 6 | import com.sevtinge.cemiuiler.module.hook.voiceassist.UseThirdPartyBrowser; 7 | 8 | public class VoiceAssist extends BaseModule { 9 | 10 | @Override 11 | public void handleLoadPackage() { 12 | // dexKit load 13 | initHook(LoadHostDir.INSTANCE); 14 | initHook(UseThirdPartyBrowser.INSTANCE, mPrefsMap.getBoolean("content_extension_browser")); 15 | // dexKit finish 16 | initHook(CloseHostDir.INSTANCE); 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/app/Weather.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.app; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseModule; 4 | import com.sevtinge.cemiuiler.module.hook.weather.SetDeviceLevel; 5 | 6 | public class Weather extends BaseModule { 7 | 8 | @Override 9 | public void handleLoadPackage() { 10 | initHook(new SetDeviceLevel(), mPrefsMap.getStringAsInt("weather_device_level", 0) != 3); 11 | } 12 | } 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/base/HostDir.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.base 2 | 3 | import com.sevtinge.cemiuiler.utils.DexKit.closeDexKit 4 | import com.sevtinge.cemiuiler.utils.DexKit.initDexKit 5 | 6 | object LoadHostDir : BaseHook() { 7 | override fun init() { 8 | if (lpparam != null) { 9 | initDexKit(lpparam) 10 | } 11 | } 12 | } 13 | 14 | 15 | object CloseHostDir : BaseHook() { 16 | override fun init() { 17 | if (lpparam != null) { 18 | closeDexKit() 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/base/IXposedHook.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.base; 2 | 3 | public interface IXposedHook { 4 | 5 | void initZygote(); 6 | 7 | void handleLoadPackage(); 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/aod/UnlockAlwaysOnDisplay.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.aod 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object UnlockAlwaysOnDisplay : BaseHook() { 9 | override fun init() { 10 | loadClass("com.miui.aod.widget.AODSettings").methodFinder().first { 11 | name == "onlySupportKeycodeGoto" 12 | }.createHook { 13 | returnConstant(false) 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/EnableLabOptions.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook 4 | import com.sevtinge.cemiuiler.utils.hookBeforeMethod 5 | import com.sevtinge.cemiuiler.utils.log.XposedLogUtils 6 | 7 | object EnableLabOptions : BaseHook() { 8 | override fun init() { 9 | try { 10 | "com.xiaomi.camera.util.SystemProperties".hookBeforeMethod( 11 | "getBoolean", String::class.java, Boolean::class.java 12 | ) { 13 | if (it.args[0] == "camera.lab.options") it.result = true 14 | } 15 | } catch (e: Exception) { 16 | XposedLogUtils.logE(TAG, e) 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/Unlock120Fps.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class Unlock120Fps extends BaseHook { 6 | @Override 7 | public void init() { 8 | hookAllMethods("com.android.camera2.CameraCapabilitiesUtil", "isSupported4K120Fps", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/Unlock60Fps.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class Unlock60Fps extends BaseHook { 6 | @Override 7 | public void init() { 8 | hookAllMethods("com.android.camera.data.data.config.ComponentConfigVideoQuality", "isSupport60FPS", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockAiWatermark.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockAiWatermark extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.aiwatermark.AIWaterModuleEntry", "support", new MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockAmbilight.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockAmbilight extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.ambilight.AmbilightModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockAudioZoom.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockAudioZoom extends BaseHook { 6 | @Override 7 | public void init() { 8 | hookAllMethods("com.android.camera.aiaudio.AiAudioParameterManager", "isSupportAiAudioNew", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockCosmeticMirror.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockCosmeticMirror extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.cosmeticmirror.CosmeticMirrorModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockDoc.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockDoc extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.doc.DocModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockDualcam.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockDualcam extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.dualcam.DualCamModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockDuration.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockDuration extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.fast.FastMotionModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockFilm.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockFilm extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.more.film.MoreFilmModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockFilmDelay.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockFilmDelay extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.film.delay.LongExpModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockFilmDollyZoom.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockFilmDollyZoom extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.film.dollyzoom.DollyZoomModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockFilmDream.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockFilmDream extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.film.dream.DreamModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockFilmSlowShutter.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockFilmSlowShutter extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.film.slowshutter.SlowShutterModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockFilmTimeBackflow.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockFilmTimeBackflow extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.film.timebackflow.TimeBackflowModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockFilmTimeFreeze.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockFilmTimeFreeze extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.film.timefreeze.TimeFreezeModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockHandGesture.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockHandGesture extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.data.data.runing.DataItemRunning", "supportHandGesture", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockIdcard.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockIdcard extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.idcard.IDCardModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockMilive.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockMilive extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.milive.MiLiveModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockMoon.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockMoon extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.moon.MoonModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockPano.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockPano extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.pano.pano3.PanoModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockPixel.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockPixel extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.pixel.PixelModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockPortrait.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockPortrait extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.portrait.PortraitModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockSlow.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockSlow extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.slow.SlowMotionModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/camera/UnlockVideosky.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.camera; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockVideosky extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.camera.features.mode.videosky.VideoSkyModuleEntry", "support", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/contentextension/DoublePress.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.contentextension 2 | 3 | import android.content.Context 4 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 5 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 6 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 7 | import com.sevtinge.cemiuiler.module.base.BaseHook 8 | 9 | class DoublePress : BaseHook() { 10 | override fun init() { 11 | loadClass("com.miui.contentextension.utils.ContentCatcherUtil").methodFinder().first { 12 | name == "isCatcherSupportDoublePress" && 13 | parameterTypes[0] == Context::class.java 14 | }.createHook { 15 | returnConstant(true) 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/contentextension/HorizontalContentExtension.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.contentextension 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object HorizontalContentExtension : BaseHook() { 9 | override fun init() { 10 | loadClass("com.miui.contentextension.services.TextContentExtensionService").methodFinder() 11 | .first { 12 | name == "isScreenPortrait" 13 | }.createHook { 14 | after { 15 | it.result = true 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/creation/UnlockCreation.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.creation 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.setStaticObject 4 | import com.sevtinge.cemiuiler.module.base.BaseHook 5 | import com.sevtinge.cemiuiler.utils.api.LazyClass.clazzMiuiBuild 6 | 7 | object UnlockCreation : BaseHook() { 8 | override fun init() { 9 | setStaticObject(clazzMiuiBuild, "IS_TABLET", true) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/externalstorage/DisableFolderCantUse.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.externalstorage; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class DisableFolderCantUse extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.externalstorage.ExternalStorageProvider", "shouldBlockFromTree", String.class, new MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) { 11 | param.setResult(false); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/gallery/EnableHdrEnhance.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.gallery; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodHook; 6 | 7 | public class EnableHdrEnhance extends BaseHook { 8 | @Override 9 | public void init() { 10 | findAndHookMethod("com.miui.gallery.domain.DeviceFeature", "isSupportHDREnhance", new BaseHook.MethodHook() { 11 | @Override 12 | protected void before(XC_MethodHook.MethodHookParam param) throws Throwable { 13 | param.setResult(true); 14 | } 15 | }); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/gallery/EnableMagicMatting.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.gallery; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodHook; 6 | 7 | public class EnableMagicMatting extends BaseHook { 8 | @Override 9 | public void init() { 10 | findAndHookMethod("com.miui.mediaeditor.api.MediaEditorApiHelper", "isMagicMattingAvailable", new BaseHook.MethodHook() { 11 | @Override 12 | protected void before(XC_MethodHook.MethodHookParam param) throws Throwable { 13 | param.setResult(true); 14 | } 15 | }); 16 | } 17 | } 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/gallery/EnableMagicSky.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.gallery; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodHook; 6 | 7 | public class EnableMagicSky extends BaseHook { 8 | @Override 9 | public void init() { 10 | findAndHookMethod("com.miui.gallery.util.FilterSkyEntranceUtils", "showSingleFilterSky", new BaseHook.MethodHook() { 11 | @Override 12 | protected void before(XC_MethodHook.MethodHookParam param) throws Throwable { 13 | param.setResult(true); 14 | } 15 | }); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/gallery/EnableOcrForm.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.gallery; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodHook; 6 | 7 | public class EnableOcrForm extends BaseHook { 8 | @Override 9 | public void init() { 10 | findAndHookMethod("com.miui.gallery.util.RecognizeFormUtil", "isAvailable", new BaseHook.MethodHook() { 11 | @Override 12 | protected void before(XC_MethodHook.MethodHookParam param) throws Throwable { 13 | param.setResult(true); 14 | } 15 | }); 16 | } 17 | } 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/gallery/EnablePdf.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.gallery; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodHook; 6 | 7 | public class EnablePdf extends BaseHook { 8 | @Override 9 | public void init() { 10 | findAndHookMethod("com.miui.gallery.request.PicToPdfHelper", "isPicToPdfSupport", new BaseHook.MethodHook() { 11 | @Override 12 | protected void before(XC_MethodHook.MethodHookParam param) throws Throwable { 13 | param.setResult(true); 14 | } 15 | }); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/gallery/EnableRemover2.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.gallery; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodHook; 6 | 7 | public class EnableRemover2 extends BaseHook { 8 | @Override 9 | public void init() { 10 | findAndHookMethod("com.miui.gallery.editor.photo.app.remover2.sdk.Remover2CheckHelper", "isRemover2Support", new BaseHook.MethodHook() { 11 | @Override 12 | protected void before(XC_MethodHook.MethodHookParam param) throws Throwable { 13 | param.setResult(true); 14 | } 15 | }); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/gallery/EnableTextYanhua.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.gallery; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodHook; 6 | 7 | public class EnableTextYanhua extends BaseHook { 8 | @Override 9 | public void init() { 10 | findAndHookMethod("com.miui.gallery.domain.SkyCheckHelper", "isSupportTextYanhua", new BaseHook.MethodHook() { 11 | @Override 12 | protected void before(XC_MethodHook.MethodHookParam param) throws Throwable { 13 | param.setResult(true); 14 | } 15 | }); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/gallery/EnableVideoPost.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.gallery; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodHook; 6 | 7 | public class EnableVideoPost extends BaseHook { 8 | @Override 9 | public void init() { 10 | findAndHookMethod("com.miui.mediaeditor.api.MediaEditorApiHelper", "isVideoPostAvailable", new BaseHook.MethodHook() { 11 | @Override 12 | protected void before(XC_MethodHook.MethodHookParam param) throws Throwable { 13 | param.setResult(true); 14 | } 15 | }); 16 | } 17 | } 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/UnlockHotseatIcon.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook 4 | import com.sevtinge.cemiuiler.utils.hookBeforeMethod 5 | 6 | class UnlockHotseatIcon : BaseHook() { 7 | override fun init() { 8 | "com.miui.home.launcher.DeviceConfig".hookBeforeMethod("getHotseatMaxCount") { 9 | it.result = 99 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/dock/DisableRecentsIcon.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.dock 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object DisableRecentsIcon : BaseHook() { 9 | override fun init() { 10 | loadClass("com.miui.home.launcher.hotseats.HotSeatsListRecentsAppProvider").methodFinder().first { 11 | name == "updateFinalRecommendTasks" 12 | }.createHook { 13 | before { param -> 14 | param.result = true 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/dock/ShowDockIconTitle.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.dock 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook 4 | import com.sevtinge.cemiuiler.utils.hookBeforeMethod 5 | 6 | object ShowDockIconTitle : BaseHook() { 7 | override fun init() { 8 | 9 | "com.miui.home.launcher.DeviceConfig".hookBeforeMethod("isHotseatsAppTitleHided") { 10 | it.result = false 11 | } 12 | 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/folder/BigFolderIcon.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.folder; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class BigFolderIcon extends BaseHook { 6 | 7 | Class mFolderIcon; 8 | 9 | @Override 10 | public void init() { 11 | 12 | mFolderIcon = findClassIfExists("com.miui.home.launcher.folder.FolderIcon2x2_4"); 13 | 14 | findAndHookMethod(mFolderIcon, "getPreviewCount", new MethodHook() { 15 | @Override 16 | protected void before(MethodHookParam param) throws Throwable { 17 | param.setResult(5); 18 | } 19 | }); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/gesture/QuickBack.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.gesture; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class QuickBack extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.miui.home.recents.GestureStubView", 9 | "isDisableQuickSwitch", new MethodHook() { 10 | @Override 11 | protected void before(MethodHookParam param) { 12 | param.setResult(false); 13 | } 14 | } 15 | ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/layout/ShowClock.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.layout; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodReplacement; 6 | 7 | public class ShowClock extends BaseHook { 8 | 9 | @Override 10 | public void init() { 11 | findAndHookMethod("com.miui.home.launcher.Workspace", "isScreenHasClockGadget", long.class, XC_MethodReplacement.returnConstant(false)); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/layout/UnlockGridsNoWord.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.layout; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodReplacement; 6 | 7 | public class UnlockGridsNoWord extends BaseHook { 8 | 9 | Class mDeviceConfig; 10 | 11 | @Override 12 | public void init() { 13 | mDeviceConfig = findClassIfExists("com.miui.home.launcher.DeviceConfig"); 14 | 15 | findAndHookMethod(mDeviceConfig, "isThemeCoverCellConfig", XC_MethodReplacement.returnConstant(true)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/other/BlurRadius.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.other 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook 4 | import com.sevtinge.cemiuiler.utils.findClass 5 | import com.sevtinge.cemiuiler.utils.hookBeforeAllMethods 6 | 7 | object BlurRadius : BaseHook() { 8 | override fun init() { 9 | 10 | val value = mPrefsMap.getInt("home_other_blur_radius", 100).toFloat() / 100 11 | if (value == 1f) return 12 | val blurUtilsClass = "com.miui.home.launcher.common.BlurUtils".findClass() 13 | blurUtilsClass.hookBeforeAllMethods("fastBlur") { 14 | it.args[0] = it.args[0] as Float * value 15 | } 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/other/FixAndroidRS.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.other 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook 4 | import de.robv.android.xposed.XC_MethodReplacement 5 | import de.robv.android.xposed.XposedHelpers 6 | 7 | object FixAndroidRS : BaseHook() { 8 | override fun init() { 9 | val globalSearchUtilClass = "com.miui.home.launcher.GlobalSearchUtil" 10 | XposedHelpers.findAndHookMethod(globalSearchUtilClass, lpparam.classLoader, 11 | "isSupportPullDownSearch", object : XC_MethodReplacement() { 12 | override fun replaceHookedMethod(param: MethodHookParam?): Any { 13 | return false 14 | } 15 | }) 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/other/OverlapMode.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.other 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | class OverlapMode : BaseHook() { 9 | override fun init() { 10 | // Fold2 样式负一屏 11 | loadClass("com.miui.home.launcher.overlay.assistant.AssistantDeviceAdapter").methodFinder() 12 | .first { 13 | name == "inOverlapMode" 14 | }.createHook { 15 | returnConstant(true) 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/recent/FreeformCardBackgroundColor.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.recent 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook 4 | import com.sevtinge.cemiuiler.utils.findClass 5 | import com.sevtinge.cemiuiler.utils.hookAfterAllConstructors 6 | import com.sevtinge.cemiuiler.utils.setIntField 7 | 8 | object FreeformCardBackgroundColor : BaseHook() { 9 | override fun init() { 10 | val appCardBgColor = mPrefsMap.getInt("home_recent_freeform_background_color", -1) 11 | if (appCardBgColor != -1) { 12 | "com.miui.home.recents.views.TaskViewThumbnail".findClass().hookAfterAllConstructors { 13 | it.thisObject.setIntField("mBgColorForSmallWindow", appCardBgColor) 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/recent/MemInfoShow.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.recent 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object MemInfoShow : BaseHook() { 9 | override fun init() { 10 | loadClass("com.miui.home.recents.views.RecentsDecorations").methodFinder().first { 11 | name == "canTxtMemInfoShow" 12 | }.createHook { 13 | before { param -> 14 | param.result = true 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/recent/RemoveIcon.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.recent 2 | 3 | import android.view.View 4 | import android.widget.ImageView 5 | import com.sevtinge.cemiuiler.module.base.BaseHook 6 | import com.sevtinge.cemiuiler.utils.getObjectField 7 | import com.sevtinge.cemiuiler.utils.hookAfterMethod 8 | 9 | object RemoveIcon : BaseHook() { 10 | override fun init() { 11 | if (mPrefsMap.getBoolean("home_recent_remove_icon")) { 12 | "com.miui.home.recents.views.TaskViewHeader".hookAfterMethod( 13 | "onFinishInflate" 14 | ) { 15 | val mImage = it.thisObject.getObjectField("mIconView") as ImageView 16 | mImage.visibility = View.GONE 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/title/DisableHideTheme.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.title 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook 4 | import com.sevtinge.cemiuiler.utils.api.IS_TABLET 5 | 6 | object DisableHideTheme: BaseHook() { 7 | override fun init() { 8 | if (!IS_TABLET) return 9 | 10 | hookAllMethods("com.miui.home.launcher.DeviceConfig", "needHideThemeManager", 11 | object : MethodHook() { 12 | override fun before(param: MethodHookParam) { 13 | param.result = false 14 | } 15 | } 16 | ) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/title/EnableIconMonoChrome.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.title; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class EnableIconMonoChrome extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.miui.home.launcher.graphics.MonochromeUtils", "isSupportMonochrome", new MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/title/HiddenAllTitle.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.title; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class HiddenAllTitle extends BaseHook { 6 | @Override 7 | public void init() { 8 | /*用于隐藏应用名*/ 9 | findAndHookMethod("com.miui.home.launcher.ItemIcon", "setTitle", 10 | CharSequence.class, new MethodHook() { 11 | @Override 12 | protected void before(MethodHookParam param) { 13 | param.setResult(null); 14 | } 15 | } 16 | ); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/title/NewInstallIndicator.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.title; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class NewInstallIndicator extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.miui.home.launcher.TitleTextView", 9 | "updateNewInstallIndicator", 10 | boolean.class, new MethodHook() { 11 | @Override 12 | protected void before(MethodHookParam param) { 13 | param.setResult(null); 14 | } 15 | } 16 | ); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/home/title/PerfectIcon.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.home.title; 2 | 3 | import android.content.pm.LauncherActivityInfo; 4 | 5 | import com.sevtinge.cemiuiler.module.base.BaseHook; 6 | 7 | public class PerfectIcon extends BaseHook { 8 | 9 | @Override 10 | public void init() { 11 | findAndHookMethod("com.miui.home.library.compat.LauncherActivityInfoCompat", "getIconResource", LauncherActivityInfo.class, new MethodHook() { 12 | @Override 13 | protected void before(MethodHookParam param) throws Throwable { 14 | param.setResult(0); 15 | } 16 | }); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/joyose/DisableCloudControl.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.joyose 2 | 3 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 4 | import com.sevtinge.cemiuiler.module.base.BaseHook 5 | import com.sevtinge.cemiuiler.utils.DexKit.addUsingStringsEquals 6 | import com.sevtinge.cemiuiler.utils.DexKit.dexKitBridge 7 | 8 | object DisableCloudControl : BaseHook() { 9 | override fun init() { 10 | dexKitBridge.findMethod { 11 | matcher { 12 | addUsingStringsEquals("job exist, sync local...") 13 | returnType = "void" 14 | } 15 | }.firstOrNull()?.getMethodInstance(lpparam.classLoader)?.createHook { 16 | returnConstant(null) 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/joyose/EnableGpuTuner.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.joyose 2 | 3 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 4 | import com.sevtinge.cemiuiler.module.base.BaseHook 5 | import com.sevtinge.cemiuiler.utils.DexKit.addUsingStringsEquals 6 | import com.sevtinge.cemiuiler.utils.DexKit.dexKitBridge 7 | 8 | 9 | object EnableGpuTuner : BaseHook() { 10 | override fun init() { 11 | dexKitBridge.findMethod { 12 | matcher { 13 | addUsingStringsEquals("GPUTUNER_SWITCH") 14 | returnType = "boolean" 15 | } 16 | }.firstOrNull()?.getMethodInstance(lpparam.classLoader)?.createHook { 17 | returnConstant(true) 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/milink/UnlockMiShare.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.milink; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodHook; 6 | 7 | public class UnlockMiShare extends BaseHook { 8 | @Override 9 | public void init() { 10 | hookAllMethods("com.miui.circulate.world.auth.AuthUtil", "doPermissionCheck", new MethodHook() { 11 | @Override 12 | protected void before(XC_MethodHook.MethodHookParam param) { 13 | param.setResult(null); 14 | } 15 | }); 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/mirror/UnlockMiuiPlus.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.mirror; 2 | 3 | import android.content.Context; 4 | 5 | import com.sevtinge.cemiuiler.module.base.BaseHook; 6 | 7 | import de.robv.android.xposed.XC_MethodHook; 8 | 9 | public class UnlockMiuiPlus extends BaseHook { 10 | @Override 11 | public void init() { 12 | findAndHookMethod("com.xiaomi.mirror.utils.SystemUtils", "isModelSupport", Context.class, new BaseHook.MethodHook() { 13 | @Override 14 | protected void before(XC_MethodHook.MethodHookParam param) throws Throwable { 15 | param.setResult(true); 16 | } 17 | }); 18 | } 19 | } 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/mtb/IsUserBuild.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.mtb 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object IsUserBuild : BaseHook() { 9 | override fun init() { 10 | loadClass("com.xiaomi.mtb.MtbUtils").methodFinder().first { 11 | name == "IsUserBuild" 12 | }.createHook { 13 | returnConstant(false) 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/networkboost/LinkTurboToast.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.networkboost; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class LinkTurboToast extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.xiaomi.NetworkBoost.slaservice.SLAToast", 9 | "setLinkTurboStatus", boolean.class, new MethodHook() { 10 | @Override 11 | protected void before(MethodHookParam param) { 12 | param.args[0] = false; 13 | } 14 | } 15 | ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/nfc/AllowInformationScreen.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.nfc 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | class AllowInformationScreen : BaseHook() { 9 | override fun init() { 10 | loadClass("com.android.nfc.NfcService").methodFinder().filterByName("sendMessage").first().createHook { 11 | before { 12 | if (it.args[1] == 2 || it.args[1] == 4) { 13 | it.args[1] = 8 14 | } 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/nfc/DisableSound.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.nfc; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class DisableSound extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.nfc.NfcService", 9 | "initSoundPool", new MethodHook() { 10 | @Override 11 | protected void before(MethodHookParam param) { 12 | param.setResult(null); 13 | } 14 | } 15 | ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/packageinstaller/DisableCountChecking.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.packageinstaller 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object DisableCountChecking : BaseHook() { 9 | override fun init() { 10 | loadClass("com.miui.packageInstaller.model.RiskControlRules").methodFinder().first { 11 | name == "getCurrentLevel" 12 | }.createHook { 13 | returnConstant(0) 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/packageinstaller/InstallSource.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.packageinstaller; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodReplacement; 6 | 7 | public class InstallSource extends BaseHook { 8 | 9 | String mInstallSourcePackageName; 10 | 11 | @Override 12 | public void init() { 13 | 14 | mInstallSourcePackageName = mPrefsMap.getString("miui_package_installer_install_source", "com.android.fileexplorer"); 15 | 16 | findAndHookMethodSilently("com.miui.packageInstaller.InstallStart", 17 | "getCallingPackage", 18 | XC_MethodReplacement.returnConstant(mInstallSourcePackageName)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/packageinstaller/SafeMode.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.packageinstaller; 2 | 3 | import android.content.Context; 4 | 5 | import com.sevtinge.cemiuiler.module.base.BaseHook; 6 | 7 | import de.robv.android.xposed.XC_MethodReplacement; 8 | 9 | public class SafeMode extends BaseHook { 10 | 11 | @Override 12 | public void init() { 13 | 14 | findAndHookMethod("com.android.packageinstaller.compat.MiuiSettingsCompat", 15 | "isSafeModelEnable", 16 | Context.class, 17 | XC_MethodReplacement.returnConstant(mPrefsMap.getBoolean("miui_package_installer_safe_mode"))); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/phone/DualNrSupport.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.phone 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object DualNrSupport : BaseHook() { 9 | override fun init() { 10 | loadClass("miui.telephony.TelephonyManagerEx").methodFinder().first { 11 | name == "isDualNrSupported" 12 | }.createHook { 13 | returnConstant(true) 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/phone/DualSaSupport.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.phone 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object DualSaSupport : BaseHook() { 9 | override fun init() { 10 | loadClass("miui.telephony.TelephonyManagerEx").methodFinder().first { 11 | name == "isDualSaSupported" 12 | }.createHook { 13 | returnConstant(true) 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/phone/N1BandPhone.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.phone 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object N1BandPhone : BaseHook() { 9 | override fun init() { 10 | runCatching { 11 | loadClass("miui.telephony.TelephonyManagerEx").methodFinder().first { 12 | name == "isN1Supported" 13 | }.createHook { 14 | returnConstant(true) 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/phone/N28BandPhone.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.phone 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object N28BandPhone : BaseHook() { 9 | override fun init() { 10 | runCatching { 11 | loadClass("miui.telephony.TelephonyManagerEx").methodFinder().first { 12 | name == "isN28Supported" 13 | }.createHook { 14 | returnConstant(true) 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/powerkeeper/DontKillApps.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.powerkeeper 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object DontKillApps : BaseHook() { 9 | override fun init() { 10 | loadClass("miui.process.ProcessManager").methodFinder().first { 11 | name == "kill" 12 | }.createHook { 13 | returnConstant(false) 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/powerkeeper/LockMaxFps.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.powerkeeper 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object LockMaxFps : BaseHook() { 9 | override fun init() { 10 | loadClass("com.miui.powerkeeper.statemachine.DisplayFrameSetting").methodFinder().first { 11 | name == "setScreenEffect" && parameterCount == 3 12 | }.createHook { 13 | returnConstant(null) 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/powerkeeper/PreventBatteryWitelist.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.powerkeeper; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | import com.sevtinge.cemiuiler.utils.Helpers; 5 | 6 | public class PreventBatteryWitelist extends BaseHook { 7 | @Override 8 | public void init() { 9 | Helpers.hookAllMethods("com.miui.powerkeeper.utils.CommonAdapter", lpparam.classLoader, "addPowerSaveWhitelistApps", new MethodHook(20000) { 10 | @Override 11 | protected void before(MethodHookParam param) throws Throwable { 12 | param.setResult(null); 13 | } 14 | }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/scanner/EnableDocPpt.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.scanner; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class EnableDocPpt extends BaseHook { 6 | @Override 7 | public void init() { 8 | hookAllMethods("com.xiaomi.scanner.settings.FeatureManager", "isPPTModuleAvailable", new MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/scanner/EnableOcr.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.scanner; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class EnableOcr extends BaseHook { 6 | @Override 7 | public void init() { 8 | hookAllMethods("com.xiaomi.scanner.settings.FeatureManager", "isAddTextExtractionFunction", new MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/scanner/document/EnableDocument.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.scanner.document; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class EnableDocument extends BaseHook { 6 | @Override 7 | public void init() { 8 | hookAllMethods("com.xiaomi.scanner.settings.FeatureManager", "isAddDocumentModule", new MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/scanner/document/EnablePpt.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.scanner.document; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class EnablePpt extends BaseHook { 6 | @Override 7 | public void init() { 8 | hookAllMethods("com.xiaomi.scanner.settings.FeatureManager", "isSupportPpt", new MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | 15 | } 16 | } 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/screenrecorder/UnlockMoreVolumeFrom.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.screenrecorder; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XposedHelpers; 6 | 7 | public class UnlockMoreVolumeFrom extends BaseHook { 8 | @Override 9 | public void init() { 10 | Class mVolumeFrom = findClassIfExists("w0.a"); 11 | findAndHookConstructor("w0.a", new MethodHook() { 12 | @Override 13 | protected void after(MethodHookParam param) throws Throwable { 14 | XposedHelpers.setStaticBooleanField(mVolumeFrom, "h", true); 15 | } 16 | }); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/screenshot/SaveToPictures.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.screenshot 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook 4 | import de.robv.android.xposed.XposedHelpers 5 | 6 | object SaveToPictures : BaseHook() { 7 | override fun init() { 8 | val clazz = XposedHelpers.findClass("android.os.Environment", lpparam.classLoader) 9 | XposedHelpers.setStaticObjectField(clazz, "DIRECTORY_DCIM", "Pictures") 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/securitycenter/IsSbnBelongToActiveBubbleApp.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.securitycenter 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object IsSbnBelongToActiveBubbleApp : BaseHook() { 9 | override fun init() { 10 | runCatching { 11 | loadClass("com.miui.bubbles.settings.BubblesSettings").methodFinder().first { 12 | name == "isSbnBelongToActiveBubbleApp" 13 | }.createHook { 14 | returnConstant(true) 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/securitycenter/lab/LabUtilsClass.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.securitycenter.lab 2 | 3 | import com.sevtinge.cemiuiler.utils.DexKit.addUsingStringsEquals 4 | import com.sevtinge.cemiuiler.utils.DexKit.dexKitBridge 5 | 6 | object LabUtilsClass { 7 | val labUtilClass by lazy { 8 | dexKitBridge.findClass { 9 | matcher { 10 | addUsingStringsEquals("mi_lab_ai_clipboard_enable", "mi_lab_blur_location_enable") 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemframework/AllowUntrustedTouch.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemframework; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodReplacement; 6 | 7 | public class AllowUntrustedTouch extends BaseHook { 8 | 9 | Class mInputManager; 10 | 11 | @Override 12 | public void init() { 13 | mInputManager = findClassIfExists("android.hardware.input.InputManager"); 14 | hookAllMethods(mInputManager, "getBlockUntrustedTouchesMode", XC_MethodReplacement.returnConstant(0));// error 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemframework/DeleteOnPostNotification.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemframework 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook 4 | 5 | object DeleteOnPostNotification : BaseHook() { 6 | 7 | override fun init() { 8 | findAndHookMethod("com.android.server.wm.AlertWindowNotification", "onPostNotification", 9 | object : MethodHook() { 10 | override fun before(param: MethodHookParam?) { 11 | param?.result = null 12 | } 13 | } 14 | ) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemframework/DisablePinVerifyPer72h.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemframework; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodReplacement; 6 | 7 | public class DisablePinVerifyPer72h extends BaseHook { 8 | @Override 9 | public void init() { 10 | findAndHookMethod("com.android.server.locksettings.LockSettingsStrongAuth", "rescheduleStrongAuthTimeoutAlarm", long.class, int.class, XC_MethodReplacement.DO_NOTHING); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemframework/FreeformBubble.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemframework; 2 | 3 | import android.content.Context; 4 | 5 | import com.sevtinge.cemiuiler.module.base.BaseHook; 6 | 7 | import de.robv.android.xposed.XC_MethodReplacement; 8 | 9 | public class FreeformBubble extends BaseHook { 10 | 11 | Class mMiuiMultiWindowUtils; 12 | 13 | @Override 14 | public void init() { 15 | 16 | mMiuiMultiWindowUtils = findClassIfExists("android.util.MiuiMultiWindowUtils"); 17 | 18 | findAndHookMethod(mMiuiMultiWindowUtils, "multiFreeFormSupported", Context.class, XC_MethodReplacement.returnConstant(true)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemframework/SpeedInstall.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemframework; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class SpeedInstall extends BaseHook { 6 | @Override 7 | public void init() { 8 | hookAllMethods("android.content.pm.PackageInstaller", "isSupportedSpeedInstallV2", new MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemframework/UseOriginalAnimation.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemframework; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UseOriginalAnimation extends BaseHook { 6 | @Override 7 | public void init() { 8 | hookAllMethods("com.android.server.wm.AppTransitionInjector", "createActivityOpenCloseTransition", new MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(null); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemframework/VolumeDisableSafe.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemframework; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodReplacement; 6 | 7 | public class VolumeDisableSafe extends BaseHook { 8 | 9 | Class mAudioService; 10 | 11 | @Override 12 | public void init() { 13 | mAudioService = findClassIfExists("com.android.server.audio.AudioService"); 14 | returnIntConstant(mAudioService, "safeMediaVolumeIndex"); 15 | } 16 | 17 | private void returnIntConstant(Class cls, String methodName) { 18 | hookAllMethods(cls, methodName, XC_MethodReplacement.returnConstant(2147483646)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemframework/corepatch/BypassSignCheckForT.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemframework.corepatch 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook 4 | import com.sevtinge.cemiuiler.utils.log.XposedLogUtils 5 | 6 | object BypassSignCheckForT : BaseHook() { 7 | override fun init() { 8 | try { 9 | hookAllMethods("android.util.apk.ApkSignatureVerifier", "getMinimumSignatureSchemeVersionForTargetSdk", object : MethodHook() { 10 | override fun after(param: MethodHookParam?) { 11 | param?.result = 1 12 | } 13 | }) 14 | } catch (e: Throwable) { 15 | XposedLogUtils.logE(TAG, e) 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemframework/display/DisplayCutout.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemframework.display 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook 4 | 5 | object DisplayCutout : BaseHook() { 6 | override fun init() { 7 | hookAllMethods("android.view.DisplayCutout", "pathAndDisplayCutoutFromSpec", 8 | object : MethodHook() { 9 | override fun before(param: MethodHookParam) { 10 | param.args[0] = "M 0,0 H 0 V 0 Z" 11 | param.args[1] = "" 12 | } 13 | } 14 | ) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemframework/mipad/SetGestureNeedFingerNum.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemframework.mipad 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object SetGestureNeedFingerNum : BaseHook() { 9 | override fun init() { 10 | loadClass("com.miui.server.input.gesture.multifingergesture.gesture.BaseMiuiMultiFingerGesture").methodFinder() 11 | .first { 12 | name == "getFunctionNeedFingerNum" 13 | }.createHook { 14 | returnConstant(4) 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemframework/network/DualSASupport.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemframework.network 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object DualSASupport : BaseHook() { 9 | override fun init() { 10 | runCatching { 11 | loadClass("miui.telephony.TelephonyManagerEx").methodFinder().first { 12 | name == "isDualSaSupported" 13 | }.createHook { 14 | returnConstant(true) 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemframework/network/N1Band.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemframework.network 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object N1Band : BaseHook() { 9 | override fun init() { 10 | runCatching { 11 | loadClass("miui.telephony.TelephonyManagerEx").methodFinder().first { 12 | name == "isN1Supported" 13 | }.createHook { 14 | returnConstant(true) 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemframework/network/N28Band.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemframework.network 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object N28Band : BaseHook() { 9 | override fun init() { 10 | runCatching { 11 | loadClass("miui.telephony.TelephonyManagerEx").methodFinder().first { 12 | name == "isN28Supported" 13 | }.createHook { 14 | returnConstant(true) 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemsettings/AddMiuiPlusEntry.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemsettings; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XC_MethodHook; 6 | 7 | public class AddMiuiPlusEntry extends BaseHook { 8 | @Override 9 | public void init() { 10 | findAndHookMethod("com.android.settings.connection.MiMirrorController", "isMirrorSupported", new BaseHook.MethodHook() { 11 | @Override 12 | protected void before(XC_MethodHook.MethodHookParam param) { 13 | param.setResult(true); 14 | } 15 | }); 16 | } 17 | } 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemsettings/EnablePadArea.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemsettings 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.setStaticObject 4 | import com.sevtinge.cemiuiler.module.base.BaseHook 5 | import com.sevtinge.cemiuiler.utils.api.LazyClass.SettingsFeaturesClass 6 | 7 | class EnablePadArea : BaseHook() { 8 | override fun init() { 9 | setStaticObject( 10 | SettingsFeaturesClass, 11 | "IS_SUPPORT_TABLET_SCREEN_SETTINGS", 12 | true 13 | ) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemsettings/EnableSpeedMode.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemsettings; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class EnableSpeedMode extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.settings.development.SpeedModeToolsPreferenceController", "getAvailabilityStatus", new MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(0); 12 | } 13 | }); 14 | 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemsettings/InternationalBuild.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemsettings; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XposedHelpers; 6 | import miui.os.Build; 7 | 8 | public class InternationalBuild extends BaseHook { 9 | @Override 10 | public void init() { 11 | XposedHelpers.setStaticBooleanField(Build.class, "IS_INTERNATIONAL_BUILD", true); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemsettings/NewNFCPage.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemsettings; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class NewNFCPage extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.settings.utils.SettingsFeatures", "isNeedShowMiuiNFC", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemsettings/NoveltyHaptic.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemsettings 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object NoveltyHaptic : BaseHook() { 9 | override fun init() { 10 | if (mPrefsMap.getBoolean("system_settings_international_build")) return // 开启国际版设置界面将禁用此功能 11 | loadClass("com.android.settings.utils.SettingsFeatures").methodFinder().first { 12 | name == "isNoveltyHaptic" 13 | }.createHook { 14 | returnConstant(true) 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemsettings/UnLockAreaScreenshot.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemsettings 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook 4 | 5 | object UnLockAreaScreenshot : BaseHook() { 6 | override fun init() { 7 | findAndHookMethod( 8 | "com.android.settings.MiuiShortcut\$System", "supportPartialScreenShot", 9 | object : MethodHook() { 10 | override fun before(param: MethodHookParam?) { 11 | param?.result = true 12 | } 13 | }) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemsettings/UnlockTaplusForSettings.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemsettings 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object UnlockTaplusForSettings : BaseHook() { 9 | override fun init() { 10 | loadClass("com.android.settings.utils.SettingsFeatures").methodFinder().first { 11 | name == "isNeedRemoveContentExtension" 12 | }.createHook { 13 | returnConstant(false) 14 | } 15 | 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemsettings/VoipAssistantController.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemsettings; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class VoipAssistantController extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.settings.lab.MiuiVoipAssistantController", "isNotSupported", new MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) throws Throwable { 11 | param.setResult(false); 12 | } 13 | }); 14 | 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemsettings/aiimage/UnlockAi.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemsettings.aiimage; 2 | 3 | import android.content.Context; 4 | 5 | import com.sevtinge.cemiuiler.module.base.BaseHook; 6 | 7 | public class UnlockAi extends BaseHook { 8 | @Override 9 | public void init() { 10 | findAndHookMethod("com.android.settings.display.ScreenEnhanceEngineStatusCheck", "isAiSupport", Context.class, new BaseHook.MethodHook() { 11 | @Override 12 | protected void before(MethodHookParam param) { 13 | param.setResult(true); 14 | } 15 | }); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemsettings/aiimage/UnlockMemc.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemsettings.aiimage; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class UnlockMemc extends BaseHook { 6 | @Override 7 | public void init() { 8 | findAndHookMethod("com.android.settings.display.ScreenEnhanceEngineStatusCheck", "isMemcSupport", new BaseHook.MethodHook() { 9 | @Override 10 | protected void before(MethodHookParam param) { 11 | param.setResult(true); 12 | } 13 | }); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemui/BluetoothRestrict.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemui; 2 | 3 | import android.content.Context; 4 | 5 | import com.sevtinge.cemiuiler.module.base.BaseHook; 6 | 7 | import de.robv.android.xposed.XC_MethodReplacement; 8 | 9 | public class BluetoothRestrict extends BaseHook { 10 | 11 | Class mLocalBluetoothAdapter; 12 | 13 | @Override 14 | public void init() { 15 | mLocalBluetoothAdapter = findClassIfExists("com.android.settingslib.bluetooth.LocalBluetoothAdapter"); 16 | 17 | findAndHookMethod(mLocalBluetoothAdapter, 18 | "isSupportBluetoothRestrict", 19 | Context.class, 20 | XC_MethodReplacement.returnConstant(false)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemui/MiuiGxzwSize.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemui; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | public class MiuiGxzwSize extends BaseHook { 6 | 7 | @Override 8 | public void init() { 9 | 10 | Class mMiuiGxzwUtils = findClassIfExists("com.android.keyguard.fod.MiuiGxzwUtils"); 11 | 12 | /*hookAllMethods(mMiuiGxzwUtils,"caculateGxzwIconSize", new MethodHook() { 13 | @Override 14 | protected void before(MethodHookParam param) throws Throwable { 15 | XposedHelpers.setStaticIntField(mMiuiGxzwUtils,"GXZW_ANIM_HEIGHT", 1028); 16 | XposedHelpers.setStaticIntField(mMiuiGxzwUtils,"GXZW_ANIM_WIDTH", 1028); 17 | } 18 | });*/ 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemui/NotificationFix.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemui; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | 5 | import de.robv.android.xposed.XposedHelpers; 6 | 7 | public class NotificationFix extends BaseHook { 8 | @Override 9 | public void init() { 10 | XposedHelpers.setStaticBooleanField(XposedHelpers.findClass("com.android.systemui.statusbar.notification.NotificationSettingsManager", lpparam.classLoader), "USE_WHITE_LISTS", false); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemui/OriginChargeAnimation.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemui; 2 | 3 | import com.sevtinge.cemiuiler.module.base.BaseHook; 4 | import com.sevtinge.cemiuiler.utils.Helpers; 5 | 6 | public class OriginChargeAnimation extends BaseHook { 7 | 8 | Class mOriginChargeAnimCls; 9 | 10 | @Override 11 | public void init() { 12 | 13 | mOriginChargeAnimCls = findClassIfExists("com.android.systemui.statusbar.FeatureFlags"); 14 | 15 | findAndHookMethod(mOriginChargeAnimCls, "isChargingRippleEnabled", new Helpers.MethodHook() { 16 | @Override 17 | protected void after(MethodHookParam param) throws Throwable { 18 | param.setResult(true); 19 | } 20 | }); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemui/UseNativeRecents.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemui; 2 | 3 | 4 | public class UseNativeRecents { 5 | 6 | } 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemui/lockscreen/HideLockscreenZenMode.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemui.lockscreen 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object HideLockscreenZenMode : BaseHook() { 9 | override fun init() { 10 | loadClass("com.android.systemui.statusbar.notification.zen.ZenModeViewController", lpparam.classLoader) 11 | .methodFinder().first { 12 | name == "shouldBeVisible" 13 | }.createHook { 14 | returnConstant(false) 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemui/lockscreen/RemoveSmartScreen.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemui.lockscreen 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object RemoveSmartScreen : BaseHook() { 9 | override fun init() { 10 | loadClass("com.android.keyguard.negative.MiuiKeyguardMoveLeftViewContainer").methodFinder().first { 11 | name == "inflateLeftView" 12 | }.createHook { 13 | before { 14 | it.result = null 15 | } 16 | } 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemui/plugin/EnableVolumeBlur.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemui.plugin; 2 | 3 | import de.robv.android.xposed.XC_MethodReplacement; 4 | import de.robv.android.xposed.XposedHelpers; 5 | 6 | public class EnableVolumeBlur { 7 | public static void initEnableVolumeBlur(ClassLoader classLoader) { 8 | XposedHelpers.findAndHookMethod("com.android.systemui.miui.volume.Util", classLoader, "isSupportBlurS", XC_MethodReplacement.returnConstant(true)); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/module/hook/systemui/statusbar/icon/all/HideVoWiFiIcon.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.module.hook.systemui.statusbar.icon.all 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | import com.github.kyuubiran.ezxhelper.HookFactory.`-Static`.createHook 5 | import com.github.kyuubiran.ezxhelper.finders.MethodFinder.`-Static`.methodFinder 6 | import com.sevtinge.cemiuiler.module.base.BaseHook 7 | 8 | object HideVoWiFiIcon : BaseHook() { 9 | override fun init() { 10 | loadClass("com.android.systemui.MiuiOperatorCustomizedPolicy\$MiuiOperatorConfig").methodFinder().first { 11 | name == "getHideVowifi" 12 | }.createHook { returnConstant(true) } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/prefs/PreferenceHeader.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.prefs; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | 6 | import androidx.annotation.NonNull; 7 | import androidx.annotation.Nullable; 8 | 9 | import com.sevtinge.cemiuiler.R; 10 | 11 | import moralnorm.preference.Preference; 12 | 13 | public class PreferenceHeader extends Preference { 14 | 15 | public PreferenceHeader(@NonNull Context context) { 16 | super(context); 17 | init(); 18 | } 19 | 20 | public PreferenceHeader(@NonNull Context context, @Nullable AttributeSet attrs) { 21 | super(context, attrs); 22 | init(); 23 | } 24 | 25 | private void init() { 26 | setLayoutResource(R.layout.preference_header); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/HideAppActivity.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui; 2 | 3 | import moralnorm.appcompat.app.AppCompatActivity; 4 | 5 | public class HideAppActivity extends AppCompatActivity { 6 | } 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/SubSettings.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui; 2 | 3 | import com.sevtinge.cemiuiler.ui.base.SettingsActivity; 4 | 5 | public class SubSettings extends SettingsActivity {} 6 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/customhook/CustomHookConfigActivity.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.customhook; 2 | 3 | import android.os.Bundle; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.SettingsActivity; 7 | 8 | public class CustomHookConfigActivity extends SettingsActivity { 9 | 10 | @Override 11 | public void onCreate(Bundle bundle) { 12 | super.onCreate(bundle); 13 | setContentView(R.layout.activity_custom_hook_config); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/AiAsstFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class AiAsstFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.aiasst; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.aiasst), 19 | "com.xiaomi.aiasst.vision" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/AodFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class AodFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.aod; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.aod), 19 | "com.miui.aod" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/BarrageFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class BarrageFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.barrage; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.barrage), 19 | "com.xiaomi.barrage" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/BrowserFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class BrowserFragment extends SettingsPreferenceFragment { 10 | 11 | @Override 12 | public int getContentResId() { 13 | return R.xml.browser; 14 | } 15 | 16 | @Override 17 | public View.OnClickListener addRestartListener() { 18 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 19 | getResources().getString(R.string.browser), 20 | "com.android.browser" 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/CameraFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class CameraFragment extends SettingsPreferenceFragment { 10 | 11 | @Override 12 | public int getContentResId() { 13 | return R.xml.camera; 14 | } 15 | 16 | @Override 17 | public View.OnClickListener addRestartListener() { 18 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 19 | getResources().getString(R.string.camera), 20 | "com.android.camera" 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/ClockFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class ClockFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.clock; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.clock), 19 | "com.android.deskclock" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/CreationFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class CreationFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.creation; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.creation), 19 | "com.miui.creation" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/DownloadsFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class DownloadsFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.downloads; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.downloads), 19 | "com.android.providers.downloads.ui" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/FileExplorerFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class FileExplorerFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.fileexplorer; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.fileexplorer), 19 | "com.android.fileexplorer" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/GalleryFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class GalleryFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.gallery; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.gallery), 19 | "com.miui.gallery" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/GuardProviderFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class GuardProviderFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.guard_provider; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.guard_provider), 19 | "com.miui.guardprovider" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/HomeFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import com.sevtinge.cemiuiler.R; 4 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 5 | 6 | public class HomeFragment extends SettingsPreferenceFragment { 7 | @Override 8 | public int getContentResId() { 9 | return R.xml.home; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/InCallUiFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class InCallUiFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.incallui; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.incallui), 19 | "com.android.incallui" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/JoyoseFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class JoyoseFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.joyose; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.joyose), 19 | "com.xiaomi.joyose" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/LbeFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class LbeFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.lbe_security; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.lbe), 19 | "com.lbe.security.miui" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/MarketFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class MarketFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.market; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.market), 19 | "com.xiaomi.market" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/MediaEditorFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class MediaEditorFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.mediaeditor; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.mediaeditor), 19 | "com.miui.mediaeditor" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/MiLinkFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class MiLinkFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.milink; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.milink), 19 | "com.milink.service" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/MiSettingsFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class MiSettingsFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.mi_settings; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.mi_settings), 19 | "com.xiaomi.misettings" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/MiWallpaperFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class MiWallpaperFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.miwallpaper; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartSystemDialog(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/MirrorFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class MirrorFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.mirror; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.mirror), 19 | "com.xiaomi.mirror" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/MmsFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class MmsFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.mms; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.mms), 19 | "com.android.mms" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/MtbFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class MtbFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.mtb; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.mtb), 19 | "com.xiaomi.mtb" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/MusicFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class MusicFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.music; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.music), 19 | "com.miui.player" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/NfcFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class NfcFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.nfc; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.nfc), 19 | "com.android.nfc" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/PhoneFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class PhoneFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.phone; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.phone), 19 | "com.android.phone" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/PowerKeeperFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class PowerKeeperFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.powerkeeper; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.powerkeeper), 19 | "com.miui.powerkeeper" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/ScannerFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class ScannerFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.scanner; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.scanner), 19 | "com.xiaomi.scanner" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/ScreenRecorderFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class ScreenRecorderFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.screenrecorder; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.screenrecorder), 19 | "com.miui.screenrecorder" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/ScreenShotFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class ScreenShotFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.screenshot; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.screenshot), 19 | "com.miui.screenshot" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/SystemUIFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import com.sevtinge.cemiuiler.R; 4 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 5 | 6 | public class SystemUIFragment extends SettingsPreferenceFragment { 7 | @Override 8 | public int getContentResId() { 9 | return R.xml.system_ui; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/TsmClientFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class TsmClientFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.tsmclient; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.tsmclient), 19 | "com.miui.tsmclient" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/WeatherFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class WeatherFragment extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.weather; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.weather), 19 | "com.miui.weather2" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/about/AboutContributerFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment.about; 2 | 3 | import com.sevtinge.cemiuiler.R; 4 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 5 | 6 | public class AboutContributerFragment extends SettingsPreferenceFragment { 7 | @Override 8 | public int getContentResId() { 9 | return R.xml.prefs_about_contributor; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/about/AboutUseFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment.about; 2 | 3 | import com.sevtinge.cemiuiler.R; 4 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 5 | 6 | public class AboutUseFragment extends SettingsPreferenceFragment { 7 | @Override 8 | public int getContentResId() { 9 | return R.xml.prefs_about_use; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/framework/NetworkSettings.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment.framework; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class NetworkSettings extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.framework_phone; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartSystemDialog(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/home/HomeGestureSettings.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment.home; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class HomeGestureSettings extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.home_gesture; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.home), 19 | "com.miui.home" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/home/HomeLayoutSettings.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment.home; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class HomeLayoutSettings extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.home_layout; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.home), 19 | "com.miui.home" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/home/HomeTitleAnimSettings.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment.home; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class HomeTitleAnimSettings extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.home_title_anim; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.home), 19 | "com.miui.home" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/home/HomeWidgetSettings.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment.home; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class HomeWidgetSettings extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { 12 | return R.xml.home_widget; 13 | } 14 | 15 | @Override 16 | public View.OnClickListener addRestartListener() { 17 | return view -> ((BaseSettingsActivity)getActivity()).showRestartDialog( 18 | getResources().getString(R.string.home), 19 | "com.miui.home" 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/settings/SafeModeFragment.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment.settings; 2 | 3 | import com.sevtinge.cemiuiler.R; 4 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 5 | 6 | public class SafeModeFragment extends SettingsPreferenceFragment { 7 | @Override 8 | public int getContentResId() { return R.xml.settings_safe_mode; } 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/various/AOSPSettings.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment.various; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 7 | 8 | public class AOSPSettings extends SettingsPreferenceFragment { 9 | @Override 10 | public int getContentResId() { return R.xml.various_aosp; } 11 | } -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/ui/fragment/various/MiPadSettings.java: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.ui.fragment.various; 2 | 3 | import android.view.View; 4 | 5 | import com.sevtinge.cemiuiler.R; 6 | import com.sevtinge.cemiuiler.ui.base.BaseSettingsActivity; 7 | import com.sevtinge.cemiuiler.ui.fragment.base.SettingsPreferenceFragment; 8 | 9 | public class MiPadSettings extends SettingsPreferenceFragment { 10 | @Override 11 | public int getContentResId() { return R.xml.various_mipad; } 12 | 13 | @Override 14 | public View.OnClickListener addRestartListener() { 15 | return view -> ((BaseSettingsActivity)getActivity()).showRestartSystemDialog(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/sevtinge/cemiuiler/utils/api/loadClassByLazy.kt: -------------------------------------------------------------------------------- 1 | package com.sevtinge.cemiuiler.utils.api 2 | 3 | import com.github.kyuubiran.ezxhelper.ClassUtils.loadClass 4 | 5 | // by StarVoyager 6 | object LazyClass { 7 | val clazzMiuiBuild by lazy { 8 | loadClass("miui.os.Build") 9 | } 10 | 11 | val AndroidBuildCls by lazy { 12 | loadClass("android.os.Build") 13 | } 14 | 15 | val SettingsFeaturesClass by lazy { 16 | loadClass("com.android.settings.utils.SettingsFeatures") 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/zhenxiang/blur/BlurFrameLayout.kt: -------------------------------------------------------------------------------- 1 | package com.zhenxiang.blur 2 | 3 | import android.content.Context 4 | import android.os.Build 5 | import android.widget.FrameLayout 6 | import androidx.annotation.RequiresApi 7 | 8 | class BlurFrameLayout constructor(context: Context) : FrameLayout(context) { 9 | @RequiresApi(Build.VERSION_CODES.S) 10 | val blurController: SystemBlurController = SystemBlurController(this) 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/zhenxiang/blur/BlurLinearLayout.kt: -------------------------------------------------------------------------------- 1 | package com.zhenxiang.blur 2 | 3 | import android.content.Context 4 | import android.os.Build 5 | import android.widget.LinearLayout 6 | import androidx.annotation.RequiresApi 7 | 8 | class BlurLinearLayout constructor(context: Context) : LinearLayout(context) { 9 | @RequiresApi(Build.VERSION_CODES.S) 10 | val blurController: SystemBlurController = SystemBlurController(this) 11 | } -------------------------------------------------------------------------------- /app/src/main/java/com/zhenxiang/blur/model/CornerRadius.kt: -------------------------------------------------------------------------------- 1 | package com.zhenxiang.blur.model 2 | 3 | data class CornersRadius( 4 | val topLeft: Float, 5 | val topRight: Float, 6 | val bottomLeft: Float, 7 | val bottomRight: Float, 8 | ) { 9 | 10 | companion object { 11 | fun all(radius: Float): CornersRadius { 12 | return CornersRadius(radius, radius, radius, radius) 13 | } 14 | 15 | fun custom( 16 | topLeft: Float, topRight: Float, bottomLeft: Float, bottomRight: Float 17 | ): CornersRadius { 18 | return CornersRadius(topLeft, topRight, bottomLeft, bottomRight) 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/res/color/ic_small_window_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/color/ic_small_window_color2.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/color/ic_small_window_color3.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/color/ic_small_window_color4.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/color/ic_small_window_color5.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 11 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/color/visual_check_text_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_wb_sunny_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bubble_bar_pop_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_aiasst.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_aiasst.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_aod.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_aod.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_browser.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_browser.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_call.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_call.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_camera.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_camera.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_clock.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_clock.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_contentextension.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_contentextension.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_creation.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_creation.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_custom.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_custom.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_downloads.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_downloads.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_fileexplorer.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_fileexplorer.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_gallery.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_gallery.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_guard_provider.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_guard_provider.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_guard_provider_new.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_guard_provider_new.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_home.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_home.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_lbe.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_lbe.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_lingqiqi.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_lingqiqi.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_market.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_market.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_mediaeditor.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_mediaeditor.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_milink.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_milink.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_misettings.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_misettings.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_mishare.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_mishare.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_miui_plus.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_miui_plus.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_miui_volume_notification.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_miwallpaper.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_miwallpaper.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_mms.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_mms.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_moralnorm.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_moralnorm.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_mtb.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_mtb.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_music.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_music.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_package_installer.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_package_installer.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_packageinstaller_background_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_packageinstaller_background_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_personal_assistant.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_personal_assistant.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_phone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_phone.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_powerkeeper.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_powerkeeper.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_qs_tile_bg_disabled.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_qs_tile_bg_enabled.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_qs_tile_bg_warning.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_scanner.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_scanner.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_screenrecorder.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_screenrecorder.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_screenshot.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_screenshot.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_security_center.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_security_center.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_securityadd.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_securityadd.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_sevtinge.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_sevtinge.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_system_framework.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_system_framework.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_system_settings.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_system_settings.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_system_ui.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_system_ui.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_theme_manager.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_theme_manager.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_tsmclient.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_tsmclient.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_updater.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_updater.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_various_new.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_various_new.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_voyager.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_voyager.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_weather.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_weather.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_yifeplayte.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/ic_yifeplayte.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_1_0_dark_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_1_0_dark_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_1_0_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_1_0_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_1_1_dark_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_1_1_dark_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_1_1_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_1_1_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_1_2_dark_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_1_2_dark_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_1_2_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_1_2_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_1_3_dark_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_1_3_dark_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_1_3_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_1_3_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_1_4_dark_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_1_4_dark_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_1_4_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_1_4_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_1_5_dark_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_1_5_dark_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_1_5_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_1_5_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_2_0_dark_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_2_0_dark_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_2_0_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_2_0_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_2_1_dark_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_2_1_dark_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_2_1_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_2_1_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_2_2_dark_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_2_2_dark_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_2_2_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_2_2_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_2_3_dark_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_2_3_dark_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_2_3_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_2_3_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_2_4_dark_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_2_4_dark_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_2_4_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_2_4_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_2_5_dark_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_2_5_dark_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/statusbar_signal_2_5_theme.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/app/src/main/res/drawable/statusbar_signal_2_5_theme.webp -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_common_padded.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/frame_content.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_mutiplechoice.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/preference_custom_blur_dark_mode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/preference_custom_blur_light_mode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/preference_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/settings_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 12 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/statusbar_text_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_location.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_location_simulation.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 11 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_system_framework_other.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/resources.properties: -------------------------------------------------------------------------------- 1 | unqualifiedResLocale=en-US 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-night-v31/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | @android:color/system_accent1_800 4 | @android:color/system_accent1_200 5 | -------------------------------------------------------------------------------- /app/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/values-v31/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | @android:color/system_accent1_0 4 | @android:color/system_accent1_300 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/bools.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | true 5 | true 6 | true 7 | true 8 | -------------------------------------------------------------------------------- /app/src/main/res/xml/aiasst.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/xml/aod.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/xml/browser.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/xml/clock.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/xml/creation.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/xml/downloads.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/xml/fileexplorer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/xml/guard_provider.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/xml/incallui.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/xml/lbe_security.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/xml/mediaeditor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/xml/mi_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/xml/milink.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/xml/mirror.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/xml/mishare.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/xml/miwallpaper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/xml/mms.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/xml/mtb.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/xml/music.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/xml/networkboost.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/xml/nfc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/xml/phone.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/xml/tsmclient.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/xml/weather.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext { 3 | agp_version = '8.3.0-alpha4' 4 | agp_version1 = '8.1.1' 5 | } 6 | }// Top-level build file where you can add configuration options common to all sub-projects/modules. 7 | plugins { 8 | id 'com.android.application' version '8.1.2' apply false 9 | id 'com.android.library' version '8.1.2' apply false 10 | id("org.jetbrains.kotlin.android") version '1.9.20' apply false 11 | } 12 | 13 | tasks.register('clean', Delete) { 14 | delete rootProject.layout.buildDirectory 15 | } 16 | 17 | apply from: "config.gradle" 18 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | project_id_env: CROWDIN_PROJECT_ID 2 | api_token_env: CROWDIN_API_TOKEN 3 | pull_request_title: '[translation] Update translation from Crowdin' 4 | preserve_hierarchy: true 5 | 6 | files: 7 | - source: /app/src/main/res/values/strings.xml 8 | translation: /app/src/main/res/values-%two_letters_code%/%original_file_name% 9 | type: android 10 | skip_untranslated_strings: true 11 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Aug 20 20:29:27 CST 2023 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /hidden-api/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /hidden-api/src/main/java/android/view/ViewRootImpl.java: -------------------------------------------------------------------------------- 1 | package android.view; 2 | 3 | import android.os.Build; 4 | 5 | import androidx.annotation.RequiresApi; 6 | 7 | import com.android.internal.graphics.drawable.BackgroundBlurDrawable; 8 | 9 | public class ViewRootImpl { 10 | @RequiresApi(Build.VERSION_CODES.S) 11 | public BackgroundBlurDrawable createBackgroundBlurDrawable() { 12 | throw new RuntimeException("Stub!"); 13 | } 14 | } -------------------------------------------------------------------------------- /hidden-api/src/main/java/com/android/internal/graphics/drawable/BackgroundBlurDrawable.java: -------------------------------------------------------------------------------- 1 | package com.android.internal.graphics.drawable; 2 | 3 | import android.graphics.drawable.Drawable; 4 | import android.os.Build; 5 | 6 | import androidx.annotation.RequiresApi; 7 | 8 | @RequiresApi(Build.VERSION_CODES.S) 9 | public abstract class BackgroundBlurDrawable extends Drawable { 10 | } 11 | -------------------------------------------------------------------------------- /hidden-api/src/main/java/miui/app/MiuiFreeFormManager.java: -------------------------------------------------------------------------------- 1 | package miui.app; 2 | 3 | public class MiuiFreeFormManager { 4 | } 5 | -------------------------------------------------------------------------------- /hidden-api/src/main/java/miui/drm/DrmManager.kt: -------------------------------------------------------------------------------- 1 | package miui.drm 2 | 3 | class DrmManager { 4 | enum class DrmResult { 5 | DRM_SUCCESS 6 | } 7 | } -------------------------------------------------------------------------------- /hidden-api/src/main/java/miui/drm/ThemeReceiver.kt: -------------------------------------------------------------------------------- 1 | package miui.drm 2 | 3 | class ThemeReceiver -------------------------------------------------------------------------------- /imgs/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ReChronoRain/Cemiuiler/b66a0b6fc3e0be823cd837daf4db07172f9be360/imgs/icon.png -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | google() 5 | mavenCentral() 6 | } 7 | } 8 | 9 | 10 | dependencyResolutionManagement { 11 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 12 | repositories { 13 | google() 14 | mavenCentral() 15 | maven { 16 | url 'https://api.xposed.info' 17 | } 18 | 19 | maven { url 'https://jitpack.io' } 20 | } 21 | } 22 | rootProject.name = "Cemiuiler" 23 | include ':app' 24 | include ':hidden-api' 25 | -------------------------------------------------------------------------------- /signing.properties.example: -------------------------------------------------------------------------------- 1 | storeFile= 2 | storePassword= 3 | keyAlias= 4 | keyPassword= 5 | --------------------------------------------------------------------------------