aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrumeet <liangyuteng12345@gmail.com>2018-11-27 15:32:01 -0800
committerTrumeet <liangyuteng12345@gmail.com>2018-11-27 15:32:01 -0800
commit288320e10e1eb93bc7f539a6394b1b0c64932c68 (patch)
tree80b2d0a26b3c6a1f2139a442638d9471df933a53
parent4ec6cda3df823f1c0d65742b2d22555875b7a497 (diff)
downloadSysUIController-288320e10e1eb93bc7f539a6394b1b0c64932c68.tar
SysUIController-288320e10e1eb93bc7f539a6394b1b0c64932c68.tar.gz
SysUIController-288320e10e1eb93bc7f539a6394b1b0c64932c68.tar.bz2
SysUIController-288320e10e1eb93bc7f539a6394b1b0c64932c68.zip
feat: allow customize package name in setIcon method
-rw-r--r--app/src/main/aidl/moe/yuuta/sysuicontroller/IStatusController.aidl2
-rw-r--r--app/src/main/java/moe/yuuta/sysuicontroller/core/ControllerService.java18
-rw-r--r--hiddenapi/src/main/java/android/app/StatusBarManager.java6
-rw-r--r--hiddenapi/src/main/java/com/android/internal/statusbar/IStatusBarService.java5
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);
+}