Hello to all Developers and XDA members! I have come here to give you a guide on how to add contacts, tasks, and apps edge panel on your Galaxy Note 5 device and maybe some other devices as well so here is how you can do it!
What Is Required...
★ First you need to have experience and know how to decompile/recompile apks with Apktools, apkmanager, smali, and baksmali
★ Have 7-zip installed onto your computer/laptop
★ Make sure you have Notepad++ also installed!
★HOW TO ADD CONTACTS, TASKS, AND APPS EDGE PANEL★
WHAT DOES THIS MOD DO: This mod will let you add contacts, tasks, and apps edge panel on your non edge/edge+ Samsung device. (On Marshmallow Firmware).
★ First go into your system/etc folder and find the "floating_feature.xml"
Now open up "floating_feature.xml" with notepad++ for editing.
SEARCH FOR:
NOW CHANGE THEM TO:
★ Now go into your system/framework folder and take out your "services.jar"
★ Now decompile/baksmali services.jar, then navigate to:
Now for this part of this guide what I have highlighted in "GREEN" text is what you have to find using Notepad++, And what you see in "BLUE" are the line(s) you have to make changes to:
SEARCH FOR:
YOU SHOULD SEE SOMETHING LIKE THIS:
NOW ADD NEW LINES IN BLUE, MAKE SURE YOU PUT THEM IN THE RIGHT PLACE IN BETWEEN :GOTO AND :TRY_START:
Now navigate to:
NOW MAKE CHANGES THAT YOU SEE IN BLUE:
Now navigate to:
IT SHOULD LOOK SOMETHING LIKE THIS:
NOW REMOVE THAT WHOLE METHOD AND ADD NEW METHOD THAT YOU SEE BELOW IN BLUE:
NOW SEARCH FOR:
IT SHOULD LOOK SOMETHING LIKE THIS:
NOW REMOVE THAT WHOLE METHOD AND ADD NEW METHOD THAT YOU SEE BELOW IN BLUE:
Once done now smali/recompile your services.jar and your done with that part!
★ Now go into your system/framework folder and take out your "framework.jar"
★ Now decompile/baksmali framework.jar, then navigate to:
IT SHOULD LOOK SOMETHING LIKE THIS:
NOW ADD NEW LINES AND MAKE CHANGES IN BLUE, MAKE SURE YOU PUT THEM IN THE RIGHT PLACE:
Now navigate to:
IT SHOULD LOOK SOMETHING LIKE THIS:
NOW ADD NEW LINES IN BLUE, MAKE SURE YOU PUT THEM IN THE RIGHT PLACE:
Now you will need to do is add the SystemServiceRegistry$85.smali file from the attachment below called "framework.jar Contacts, Tasks, And Apps Edge Panel Smali Files.rar" and add it into smali/android/app/. Once done now smali/recompile your framework.jar and your DONE! The last thing you will need to do is add the contacts, tasks, and apps edge panel system files with the apks and also the system/etc/permissions xml files that you will be needing to add into your rom so download link will be below as well.
CONTACTS, TASKS, AND APPS EDGE PANEL SYSTEM FILES DOWNLOAD LINK - https://www.androidfilehost.com/?fid=24545070682210404
ONLY BUGS ARE NONE EDGE/EDGE+ USERS WONT BE ABLE TO SEE EDGE FEEDS, EDGE LIGHTNING, AND OTHER EDGE/EDGE+ FEATURES DUE TO THE DEVICE HAVING A DIFFERENT DISPLAY. IF EDGE/EDGE+ USERS ARE FLASHING/INSTALLING A NON EDGE/EDGE+ CUSTOM ROM YOU WILL NOT BE ABLE TO HAVE THOSE FEATURES ALSO BECAUSE THIS MOD ONLY ADDS CONTACTS, TASKS, AND APPS EDGE PANEL TO THE ROM OTHER DISPLAY FEATURES ARE STILL A WORK IN PROGRESS AND A LITTLE BIT HARDER TO DO BECAUSE THERE ARE MANY COCKTAILBAR CODE IN THE EDGE/EDGE+ STOCK FRAMEWORKS THAT THE NON EDGE/EDGE+ SAMSUNG DEVICES DO NOT HAVE.
What Is Required...
★ First you need to have experience and know how to decompile/recompile apks with Apktools, apkmanager, smali, and baksmali
★ Have 7-zip installed onto your computer/laptop
★ Make sure you have Notepad++ also installed!
★HOW TO ADD CONTACTS, TASKS, AND APPS EDGE PANEL★
WHAT DOES THIS MOD DO: This mod will let you add contacts, tasks, and apps edge panel on your non edge/edge+ Samsung device. (On Marshmallow Firmware).
★ First go into your system/etc folder and find the "floating_feature.xml"
Now open up "floating_feature.xml" with notepad++ for editing.
SEARCH FOR:
Code:
<SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE></SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE>
<SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE_STRIPE></SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE_STRIPE>
Code:
<SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE>people,task,circle,panel</SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE>
<SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE_STRIPE>-1</SEC_FLOATING_FEATURE_COMMON_CONFIG_EDGE_STRIPE>
★ Now decompile/baksmali services.jar, then navigate to:
Now open up "SystemServer.smali" with notepad++ for editing.smali/com/android/server/SystemServer.smali
Now for this part of this guide what I have highlighted in "GREEN" text is what you have to find using Notepad++, And what you see in "BLUE" are the line(s) you have to make changes to:
SEARCH FOR:
Code:
[COLOR="Green"] const-string/jumbo v6, "spengestureservice"[/COLOR]
Code:
const-string/jumbo v6, "spengestureservice"
new-instance v7, Lcom/android/server/smartclip/SpenGestureManagerService;
move-object/from16 v0, v206
invoke-direct {v7, v5, v0}, Lcom/android/server/smartclip/SpenGestureManagerService;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V
invoke-static {v6, v7}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
:try_end_d83
.catch Ljava/lang/Throwable; {:try_start_d6f .. :try_end_d83} :catch_1747
.line 2033
:goto_d83
:try_start_d83
const-string v6, "SystemServer"
const-string v7, "SamplingProfiler Service"
invoke-static {v6, v7}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
Code:
const-string/jumbo v6, "spengestureservice"
new-instance v7, Lcom/android/server/smartclip/SpenGestureManagerService;
move-object/from16 v0, v206
invoke-direct {v7, v5, v0}, Lcom/android/server/smartclip/SpenGestureManagerService;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V
invoke-static {v6, v7}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
:try_end_d83
.catch Ljava/lang/Throwable; {:try_start_d6f .. :try_end_d83} :catch_1747
.line 2033
:goto_d83
[COLOR="Blue"] move-object/from16 v0, p0
iget-object v6, v0, Lcom/android/server/SystemServer;->mSystemServiceManager:Lcom/android/server/SystemServiceManager;
const-string v7, "com.android.server.cocktailbar.CocktailBarManagerService"
invoke-virtual {v6, v7}, Lcom/android/server/SystemServiceManager;->startService(Ljava/lang/String;)Lcom/android/server/SystemService;[/COLOR]
:try_start_d83
const-string v6, "SystemServer"
const-string v7, "SamplingProfiler Service"
invoke-static {v6, v7}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
SEARCH FOR:smali/com/android/server/power/PowerManagerService.smali
Code:
[COLOR="Green"] const-string v8, "SEC_PRODUCT_FEATURE_COMMON_SUPPORT_COCKTAIL_FW: false"[/COLOR]
Code:
[COLOR="Green"] const-string v8, "SEC_PRODUCT_FEATURE_COMMON_SUPPORT_COCKTAIL_FW: [COLOR="Blue"]true[/COLOR]"[/COLOR]
SEARCH FOR:smali/com/android/server/notification/NotificationManagerService$6.smali
Code:
[COLOR="Green"].method public enqueueEdgeNotification(Ljava/lang/String;Ljava/lang/String;ILandroid/os/Bundle;I)V[/COLOR]
Code:
.method public enqueueEdgeNotification(Ljava/lang/String;Ljava/lang/String;ILandroid/os/Bundle;I)V
.registers 6
.param p1, "pkg" # Ljava/lang/String;
.param p2, "opPkg" # Ljava/lang/String;
.param p3, "id" # I
.param p4, "extra" # Landroid/os/Bundle;
.param p5, "userId" # I
.prologue
.line 2023
return-void
.end method
Code:
[COLOR="Blue"].method public enqueueEdgeNotification(Ljava/lang/String;Ljava/lang/String;ILandroid/os/Bundle;I)V
.registers 14
.param p1, "pkg" # Ljava/lang/String;
.param p2, "opPkg" # Ljava/lang/String;
.param p3, "id" # I
.param p4, "extra" # Landroid/os/Bundle;
.param p5, "userId" # I
.prologue
.line 2020
# invokes: Lcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V
invoke-static {p1}, Lcom/android/server/notification/NotificationManagerService;->access$3400(Ljava/lang/String;)V
.line 2021
iget-object v0, p0, Lcom/android/server/notification/NotificationManagerService$6;->this$0:Lcom/android/server/notification/NotificationManagerService;
invoke-static {}, Landroid/os/Binder;->getCallingUid()I
move-result v3
invoke-static {}, Landroid/os/Binder;->getCallingPid()I
move-result v4
move-object v1, p1
move-object v2, p2
move v5, p3
move-object v6, p4
move v7, p5
invoke-virtual/range {v0 .. v7}, Lcom/android/server/notification/NotificationManagerService;->enqueueEdgeNotificationInternal(Ljava/lang/String;Ljava/lang/String;IIILandroid/os/Bundle;I)V
.line 2023
return-void
.end method[/COLOR]
Code:
[COLOR="Green"].method public removeEdgeNotification(Ljava/lang/String;ILandroid/os/Bundle;I)V[/COLOR]
Code:
.method public removeEdgeNotification(Ljava/lang/String;ILandroid/os/Bundle;I)V
.registers 5
.param p1, "pkg" # Ljava/lang/String;
.param p2, "id" # I
.param p3, "extra" # Landroid/os/Bundle;
.param p4, "userId" # I
.prologue
.line 2034
return-void
.end method
Code:
[COLOR="Blue"].method public removeEdgeNotification(Ljava/lang/String;ILandroid/os/Bundle;I)V
.registers 12
.param p1, "pkg" # Ljava/lang/String;
.param p2, "id" # I
.param p3, "extra" # Landroid/os/Bundle;
.param p4, "userId" # I
.prologue
.line 2028
# invokes: Lcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V
invoke-static {p1}, Lcom/android/server/notification/NotificationManagerService;->access$3400(Ljava/lang/String;)V
.line 2029
invoke-static {}, Landroid/os/Binder;->getCallingPid()I
move-result v0
invoke-static {}, Landroid/os/Binder;->getCallingUid()I
move-result v1
const/4 v3, 0x1
const/4 v4, 0x0
const-string v5, "cancelNotificationWithTag"
move v2, p4
move-object v6, p1
invoke-static/range {v0 .. v6}, Landroid/app/ActivityManager;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
move-result p4
.line 2032
iget-object v0, p0, Lcom/android/server/notification/NotificationManagerService$6;->this$0:Lcom/android/server/notification/NotificationManagerService;
invoke-static {}, Landroid/os/Binder;->getCallingUid()I
move-result v1
invoke-static {}, Landroid/os/Binder;->getCallingPid()I
move-result v2
move-object v3, p1
move v4, p2
move-object v5, p3
move v6, p4
invoke-virtual/range {v0 .. v6}, Lcom/android/server/notification/NotificationManagerService;->removeEdgeNotificationInternal(IILjava/lang/String;ILandroid/os/Bundle;I)V
.line 2034
return-void
.end method[/COLOR]
★ Now go into your system/framework folder and take out your "framework.jar"
★ Now decompile/baksmali framework.jar, then navigate to:
SEARCH FOR:smali/android/app/NotificationManager.smali
Code:
[COLOR="Green"].method constructor <init>(Landroid/content/Context;Landroid/os/Handler;)V[/COLOR]
Code:
.method constructor <init>(Landroid/content/Context;Landroid/os/Handler;)V
.registers 3
.param p1, "context" # Landroid/content/Context;
.param p2, "handler" # Landroid/os/Handler;
.prologue
.line 184
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 185
iput-object p1, p0, Landroid/app/NotificationManager;->mContext:Landroid/content/Context;
.line 192
return-void
.end method
Code:
.method constructor <init>(Landroid/content/Context;Landroid/os/Handler;)V
[COLOR="Blue"].registers 4[/COLOR]
.param p1, "context" # Landroid/content/Context;
.param p2, "handler" # Landroid/os/Handler;
.prologue
.line 184
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 185
iput-object p1, p0, Landroid/app/NotificationManager;->mContext:Landroid/content/Context;
[COLOR="Blue"] new-instance v0, Landroid/app/NotificationManager$EdgeNotificationManager;
invoke-direct {v0, p1}, Landroid/app/NotificationManager$EdgeNotificationManager;-><init>(Landroid/content/Context;)V
iput-object v0, p0, Landroid/app/NotificationManager;->mEdgeNotificationManager:Landroid/app/NotificationManager$EdgeNotificationManager;[/COLOR]
.line 192
return-void
.end method
SEARCH FOR:smali/android/app/SystemServiceRegistry.smali
Code:
[COLOR="Green"] const-string/jumbo v0, "multiwindow_facade"[/COLOR]
Code:
.line 1011
const-string/jumbo v0, "multiwindow_facade"
const-class v1, Lcom/samsung/android/multiwindow/MultiWindowFacade;
new-instance v2, Landroid/app/SystemServiceRegistry$83;
invoke-direct {v2}, Landroid/app/SystemServiceRegistry$83;-><init>()V
invoke-static {v0, v1, v2}, Landroid/app/SystemServiceRegistry;->registerService(Ljava/lang/String;Ljava/lang/Class;Landroid/app/SystemServiceRegistry$ServiceFetcher;)V
.line 1046
const-string/jumbo v0, "spengestureservice"
Code:
.line 1011
const-string/jumbo v0, "multiwindow_facade"
const-class v1, Lcom/samsung/android/multiwindow/MultiWindowFacade;
new-instance v2, Landroid/app/SystemServiceRegistry$83;
invoke-direct {v2}, Landroid/app/SystemServiceRegistry$83;-><init>()V
invoke-static {v0, v1, v2}, Landroid/app/SystemServiceRegistry;->registerService(Ljava/lang/String;Ljava/lang/Class;Landroid/app/SystemServiceRegistry$ServiceFetcher;)V
[COLOR="Blue"] const-string v0, "CocktailBarService"
const-class v1, Lcom/samsung/android/cocktailbar/CocktailBarManager;
new-instance v2, Landroid/app/SystemServiceRegistry$85;
invoke-direct {v2}, Landroid/app/SystemServiceRegistry$85;-><init>()V
invoke-static {v0, v1, v2}, Landroid/app/SystemServiceRegistry;->registerService(Ljava/lang/String;Ljava/lang/Class;Landroid/app/SystemServiceRegistry$ServiceFetcher;)V[/COLOR]
.line 1046
const-string/jumbo v0, "spengestureservice"
CONTACTS, TASKS, AND APPS EDGE PANEL SYSTEM FILES DOWNLOAD LINK - https://www.androidfilehost.com/?fid=24545070682210404
ONLY BUGS ARE NONE EDGE/EDGE+ USERS WONT BE ABLE TO SEE EDGE FEEDS, EDGE LIGHTNING, AND OTHER EDGE/EDGE+ FEATURES DUE TO THE DEVICE HAVING A DIFFERENT DISPLAY. IF EDGE/EDGE+ USERS ARE FLASHING/INSTALLING A NON EDGE/EDGE+ CUSTOM ROM YOU WILL NOT BE ABLE TO HAVE THOSE FEATURES ALSO BECAUSE THIS MOD ONLY ADDS CONTACTS, TASKS, AND APPS EDGE PANEL TO THE ROM OTHER DISPLAY FEATURES ARE STILL A WORK IN PROGRESS AND A LITTLE BIT HARDER TO DO BECAUSE THERE ARE MANY COCKTAILBAR CODE IN THE EDGE/EDGE+ STOCK FRAMEWORKS THAT THE NON EDGE/EDGE+ SAMSUNG DEVICES DO NOT HAVE.
Last edited: