From 6d1b964239dee1e35ba28284ace03a75afdfe57a Mon Sep 17 00:00:00 2001 From: aliveoutside <53598473+aliveoutside@users.noreply.github.com> Date: Thu, 7 Jul 2022 16:37:26 +0300 Subject: [PATCH] hook dockbar --- .../lite/ui/fragments/dockbar/DockBarInjector.java | 10 +++++----- .../lite/ui/fragments/dockbar/DockBarManager.java | 13 ++++++++----- .../lite/ui/fragments/dockbar/DockBarTab.java | 2 +- .../vk/navigation/NavigationDelegateBottom.smali | 6 ++++++ 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarInjector.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarInjector.java index f3352ca8e..3c57d3891 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarInjector.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarInjector.java @@ -9,6 +9,8 @@ import android.graphics.drawable.Drawable; import android.view.Menu; import android.view.MenuItem; +import androidx.core.util.Pools; + import com.vk.apps.AppsFragment; import com.vk.core.drawable.RecoloredDrawable; import com.vk.core.fragments.FragmentImpl; @@ -43,15 +45,13 @@ public class DockBarInjector{ Menu menu = navigationView.getMenu(); menu.clear(); try { - Field field = BottomNavigationMenuView.class.getDeclaredField("h"); + Field field = BottomNavigationMenuView.class.getDeclaredField("J"); field.setAccessible(true); Object synchronizedPool = field.get(null); - Class synchronisedPoolCls = Class.forName("android.support.v4.f.Pools$a"); - - Method acquire = synchronisedPoolCls.getDeclaredMethod("a"); - + Class synchronisedPoolCls = Class.forName("androidx.core.util.Pools$SynchronizedPool"); + Method acquire = synchronisedPoolCls.getDeclaredMethod("acquire"); if(synchronizedPool != null){ do { } while(acquire.invoke(synchronizedPool) != null); diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java index 09d39c1bd..449d2b348 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarManager.java @@ -11,15 +11,18 @@ import com.vk.apps.AppsFragment; import com.vk.discover.DiscoverFragment; import com.vk.fave.fragments.FaveTabFragment; import com.vk.feedlikes.d.FeedLikesFragment; +import com.vk.friends.catalog.FriendsCatalogFragment; import com.vk.menu.MenuFragment; import com.vk.music.fragment.MusicFragment; import com.vk.newsfeed.HomeFragment; import com.vk.newsfeed.NewsfeedFragment; import com.vk.notifications.NotificationsContainerFragment; import com.vk.search.fragment.GroupsSearchFragment; +import com.vk.superapp.SuperAppFragment; import com.vtosters.lite.R; import com.vtosters.lite.fragments.ProfileFragment; import com.vtosters.lite.fragments.friends.FriendsFragment; +import com.vtosters.lite.fragments.friends.FriendsListFragment; import com.vtosters.lite.fragments.gifts.BirthdaysFragment; import com.vtosters.lite.fragments.lives.LivesPostListFragment; import com.vtosters.lite.fragments.money.MoneyTransfersFragment; @@ -91,12 +94,12 @@ public class DockBarManager{ } mSelectedTabs.add(new DockBarTab("tab_news", !milkshake() ? R.drawable.ic_newsfeed_28 : R.drawable.ic_menu_newsfeed_outline_28, R.string.newsfeed, R.id.tab_news, milkshake() ? HomeFragment.class : NewsfeedFragment.class)); - mSelectedTabs.add(new DockBarTab("tab_discover", !milkshake() ? R.drawable.ic_menu_search_28 : R.drawable.ic_menu_search_outline_28, R.string.search, R.id.tab_discover, DiscoverFragment.class)); + mSelectedTabs.add(new DockBarTab("tab_superapps", !milkshake() ? R.drawable.ic_menu_search_28 : R.drawable.ic_superapp_dropdown_circle, R.string.super_app_title, R.id.tab_discover, SuperAppFragment.class)); mSelectedTabs.add(new DockBarTab("tab_messages", !milkshake() ? R.drawable.ic_message_24 : R.drawable.ic_message_outline_24, R.string.messages, R.id.tab_messages, DialogsFragment.class)); - mSelectedTabs.add(new DockBarTab("tab_feedback", !milkshake() ? R.drawable.ic_notification_24 : R.drawable.ic_menu_notification_outline_28, R.string.feedback, R.id.tab_feedback, NotificationsContainerFragment.class)); - mSelectedTabs.add(new DockBarTab("tab_menu", !milkshake() ? R.drawable.ic_menu_more_28 : R.drawable.ic_menu_more_outline_28, R.string.menu, R.id.tab_menu, MenuFragment.class)); + mSelectedTabs.add(new DockBarTab("tab_friends", !milkshake() ? R.drawable.ic_users_28 : R.drawable.ic_users_outline_28, R.string.friends, R.id.menu_friends, FriendsFragment.class)); + mSelectedTabs.add(new DockBarTab("tab_profile", !milkshake() ? R.drawable.libverify_ic_account_circle_white : R.drawable.ic_account_outline_28, R.string.profile, R.id.profile, ProfileFragment.class)); - mDisabledTabs.add(new DockBarTab("tab_friends", R.drawable.ic_user_24, R.string.friends, R.id.menu_friends, FriendsFragment.class)); + mDisabledTabs.add(new DockBarTab("tab_feedback", !milkshake() ? R.drawable.ic_notification_24 : R.drawable.ic_menu_notification_outline_28, R.string.feedback, R.id.tab_feedback, NotificationsContainerFragment.class)); mDisabledTabs.add(new DockBarTab("tab_groups", R.drawable.ic_users_24, R.string.groups, R.id.menu_groups, GroupsSearchFragment.class)); mDisabledTabs.add(new DockBarTab("tab_photos", R.drawable.ic_camera_24, R.string.photos, R.id.menu_photos, PhotosFragment.class)); mDisabledTabs.add(new DockBarTab("tab_audios", R.drawable.ic_music_24, R.string.music, R.id.menu_audios, MusicFragment.class)); @@ -108,8 +111,8 @@ public class DockBarManager{ mDisabledTabs.add(new DockBarTab("tab_documents", R.drawable.ic_document_24, R.string.docs, R.id.menu_documents, DocumentsViewFragment.class)); mDisabledTabs.add(new DockBarTab("tab_payments", R.drawable.ic_money_transfer_24, R.string.money_transfer_money_transfers, R.id.menu_payments, MoneyTransfersFragment.class)); mDisabledTabs.add(new DockBarTab("tab_vk_apps", R.drawable.ic_services_24, R.string.menu_apps, R.id.menu_vk_apps, AppsFragment.class)); - mDisabledTabs.add(new DockBarTab("tab_profile", R.drawable.libverify_ic_account_circle_white, R.string.profile, R.id.profile, ProfileFragment.class)); mDisabledTabs.add(new DockBarTab("tab_settings", R.drawable.ic_settings_24, R.string.menu_settings, R.id.menu_settings, useNewSettings())); + mDisabledTabs.add(new DockBarTab("tab_menu", !milkshake() ? R.drawable.ic_menu_more_28 : R.drawable.ic_menu_more_outline_28, R.string.register, R.id.tab_menu, MenuFragment.class)); mDisabledTabs.add(new DockBarTab("tab_brtd", R.drawable.ic_menu_birthdays, R.string.birthdays_title, R.id.menu_birthdays, BirthdaysFragment.class)); } else { diff --git a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarTab.java b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarTab.java index 99ab6cc01..ae43c9234 100644 --- a/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarTab.java +++ b/app/src/main/java/ru/vtosters/lite/ui/fragments/dockbar/DockBarTab.java @@ -2,7 +2,7 @@ package ru.vtosters.lite.ui.fragments.dockbar; import com.vk.core.fragments.FragmentImpl; -public class DockBarTab{ +public class DockBarTab { public String tag; public int iconID; diff --git a/smali/smali_classes3/com/vk/navigation/NavigationDelegateBottom.smali b/smali/smali_classes3/com/vk/navigation/NavigationDelegateBottom.smali index d9b92adfd..f756ca0a8 100644 --- a/smali/smali_classes3/com/vk/navigation/NavigationDelegateBottom.smali +++ b/smali/smali_classes3/com/vk/navigation/NavigationDelegateBottom.smali @@ -295,6 +295,10 @@ move-result-object v0 + invoke-static {}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->injectMap()Ljava/util/Map; + + move-result-object v0 + sput-object v0, Lcom/vk/navigation/NavigationDelegateBottom;->e0:Ljava/util/Map; return-void @@ -2075,6 +2079,8 @@ iput-object v3, p0, Lcom/vk/navigation/NavigationDelegateBottom;->H:Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationView; + invoke-static {v3}, Lru/vtosters/lite/ui/fragments/dockbar/DockBarInjector;->inject(Lcom/vtosters/lite/ui/bottomnavigation/BottomNavigationView;)V + .line 11 invoke-virtual {p0}, Lcom/vk/navigation/NavigationDelegate;->c()Landroid/app/Activity;