From 288320e10e1eb93bc7f539a6394b1b0c64932c68 Mon Sep 17 00:00:00 2001 From: Trumeet Date: Tue, 27 Nov 2018 15:32:01 -0800 Subject: feat: allow customize package name in setIcon method --- .../moe/yuuta/sysuicontroller/IStatusController.aidl | 2 +- .../yuuta/sysuicontroller/core/ControllerService.java | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) (limited to 'app/src') diff --git a/app/src/main/aidl/moe/yuuta/sysuicontroller/IStatusController.aidl b/app/src/main/aidl/moe/yuuta/sysuicontroller/IStatusController.aidl index 0938103..e14284a 100644 --- a/app/src/main/aidl/moe/yuuta/sysuicontroller/IStatusController.aidl +++ b/app/src/main/aidl/moe/yuuta/sysuicontroller/IStatusController.aidl @@ -11,7 +11,7 @@ interface IStatusController { void expandNotificationsPanel (); void collapsePanels (); void expandSettingsPanel (in String subPanel); - void setIcon(in String slot, int iconId, int iconLevel, in String contentDescription); + void setIcon(in String slot, in String packageName, int iconId, int iconLevel, in String contentDescription); void removeIcon(in String slot); void setIconVisibility(in String slot, boolean visible); diff --git a/app/src/main/java/moe/yuuta/sysuicontroller/core/ControllerService.java b/app/src/main/java/moe/yuuta/sysuicontroller/core/ControllerService.java index 994492c..236f05f 100644 --- a/app/src/main/java/moe/yuuta/sysuicontroller/core/ControllerService.java +++ b/app/src/main/java/moe/yuuta/sysuicontroller/core/ControllerService.java @@ -9,7 +9,10 @@ import android.os.Looper; import android.os.RemoteException; import android.util.Log; +import com.android.internal.statusbar.IStatusBarService; + import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Collections; @@ -35,9 +38,15 @@ public class ControllerService extends IStatusController.Stub { private StatusBarManager mManager; private Context mContext; private Intent mKeepWakeUpIntent; + private IStatusBarService mService; public static void main (String... args) throws Throwable { - new ControllerService().run(args); + try { + new ControllerService().run(args); + } catch (Throwable throwable) { + Log.e(TAG, "FETAL EXCEPTION during init", throwable); + System.exit(throwable.hashCode()); + } } @SuppressLint({"WrongConstant", "MissingPermission"}) @@ -45,6 +54,9 @@ public class ControllerService extends IStatusController.Stub { Looper.prepare(); mContext = RootJava.getSystemContext(); mManager = (StatusBarManager) mContext.getSystemService("statusbar"); + @SuppressLint("PrivateApi") Method mGetService = StatusBarManager.class.getDeclaredMethod("getService"); + mGetService.setAccessible(true); + mService = (IStatusBarService) mGetService.invoke(mManager); RootDaemon.daemonize(BuildConfig.APPLICATION_ID, CODE_SERVICE); RootJava.restoreOriginalLdLibraryPath(); RootDaemon.register(BuildConfig.APPLICATION_ID, this, CODE_SERVICE); @@ -111,9 +123,9 @@ public class ControllerService extends IStatusController.Stub { } @Override - public void setIcon(String slot, int iconId, int iconLevel, String contentDescription) throws RemoteException { + public void setIcon(String slot, String packageName, int iconId, int iconLevel, String contentDescription) throws RemoteException { enforcePermission(); - mManager.setIcon(slot, iconId, iconLevel, contentDescription); + mService.setIcon(slot, packageName, iconId, iconLevel, contentDescription); } @Override -- cgit v1.2.3-70-g09d2