diff options
author | Trumeet <liangyuteng12345@gmail.com> | 2018-11-27 15:32:01 -0800 |
---|---|---|
committer | Trumeet <liangyuteng12345@gmail.com> | 2018-11-27 15:32:01 -0800 |
commit | 288320e10e1eb93bc7f539a6394b1b0c64932c68 (patch) | |
tree | 80b2d0a26b3c6a1f2139a442638d9471df933a53 | |
parent | 4ec6cda3df823f1c0d65742b2d22555875b7a497 (diff) | |
download | SysUIController-288320e10e1eb93bc7f539a6394b1b0c64932c68.tar SysUIController-288320e10e1eb93bc7f539a6394b1b0c64932c68.tar.gz SysUIController-288320e10e1eb93bc7f539a6394b1b0c64932c68.tar.bz2 SysUIController-288320e10e1eb93bc7f539a6394b1b0c64932c68.zip |
feat: allow customize package name in setIcon method
4 files changed, 27 insertions, 4 deletions
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 diff --git a/hiddenapi/src/main/java/android/app/StatusBarManager.java b/hiddenapi/src/main/java/android/app/StatusBarManager.java index b915dbe..691a12e 100644 --- a/hiddenapi/src/main/java/android/app/StatusBarManager.java +++ b/hiddenapi/src/main/java/android/app/StatusBarManager.java @@ -16,6 +16,8 @@ package android.app; +import com.android.internal.statusbar.IStatusBarService; + /** * Allows an app to control the status bar. * @@ -76,6 +78,10 @@ public class StatusBarManager { public static int CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP; public static int CAMERA_LAUNCH_SOURCE_LIFT_TRIGGER; + private synchronized IStatusBarService getService() { + throw new RuntimeException("Stub!"); + } + /** * Disable some features in the status bar. Pass the bitwise-or of the DISABLE_* flags. * To re-enable everything, pass {@link #DISABLE_NONE}. diff --git a/hiddenapi/src/main/java/com/android/internal/statusbar/IStatusBarService.java b/hiddenapi/src/main/java/com/android/internal/statusbar/IStatusBarService.java new file mode 100644 index 0000000..01e66a3 --- /dev/null +++ b/hiddenapi/src/main/java/com/android/internal/statusbar/IStatusBarService.java @@ -0,0 +1,5 @@ +package com.android.internal.statusbar; + +public interface IStatusBarService { + void setIcon(String slot, String packageName, int iconId, int iconLevel, String contentDescription); +} |