Skip to content

Commit

Permalink
CHANGELOG: A14ap21: SystemUI crashes
Browse files Browse the repository at this point in the history
  • Loading branch information
siavash79 committed Feb 8, 2024
1 parent 7fcd479 commit 8f31f2b
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 9 deletions.
2 changes: 1 addition & 1 deletion .github/edit2MakeNewCanary
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Editing this file will trigger the build script for a new canary.
Editing this file will trigger the build script for a new canary..
4 changes: 4 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -118,4 +118,8 @@ dependencies {

// SwipeRefreshLayout
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01"

// Class initializer
// https://mvnrepository.com/artifact/org.objenesis/objenesis
implementation 'org.objenesis:objenesis:3.3'
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@
import androidx.annotation.Nullable;
import androidx.appcompat.widget.LinearLayoutCompat;

import org.objenesis.ObjenesisHelper;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
Expand All @@ -84,6 +86,7 @@
import sh.siava.pixelxpert.modpacks.utils.SystemUtils;
import sh.siava.pixelxpert.modpacks.utils.batteryStyles.BatteryBarView;

/** @noinspection RedundantThrows*/
public class StatusbarMods extends XposedModPack {
private static final String listenPackage = Constants.SYSTEM_UI_PACKAGE;
//region Clock
Expand Down Expand Up @@ -235,8 +238,7 @@ private void initSwitchIcon() {
Icon appSwitchIcon = Icon.createWithResource(BuildConfig.APPLICATION_ID, R.drawable.ic_app_switch);
//noinspection JavaReflectionMemberAccess
Object appSwitchStatusbarIcon = StatusBarIconClass.getDeclaredConstructor(UserHandle.class, String.class, Icon.class, int.class, int.class, CharSequence.class).newInstance(UserHandle.class.getDeclaredConstructor(int.class).newInstance(0), BuildConfig.APPLICATION_ID, appSwitchIcon, 0, 0, APP_SWITCH_SLOT);
mAppSwitchStatusbarIconHolder = StatusBarIconHolderClass.newInstance();
setObjectField(mAppSwitchStatusbarIconHolder, "mIcon", appSwitchStatusbarIcon);
mAppSwitchStatusbarIconHolder = getStatusbarIconHolderFor(appSwitchStatusbarIcon);
}catch (Throwable ignored){}
}

Expand Down Expand Up @@ -1067,6 +1069,24 @@ private void placeBatteryBar() {
}
//endregion

//region statusbar icon holder
private Object getStatusbarIconHolderFor(Object statusbarIcon)
{
Object holder = ObjenesisHelper.newInstance(StatusBarIconHolderClass);
String[] iconFiled = new String[1];
Arrays.stream(StatusBarIconHolderClass.getFields()).forEach(field ->
{
if(field.getName().toLowerCase().contains("icon"))
iconFiled[0]=field.getName();
});

setObjectField(holder, iconFiled[0], statusbarIcon);

return holder;
}

//endregion

//region vo_data related
private void initVoData() {
try {
Expand All @@ -1075,26 +1095,25 @@ private void initVoData() {
Icon volteIcon = Icon.createWithResource(BuildConfig.APPLICATION_ID, R.drawable.ic_volte);
//noinspection JavaReflectionMemberAccess
Object volteStatusbarIcon = StatusBarIconClass.getDeclaredConstructor(UserHandle.class, String.class, Icon.class, int.class, int.class, CharSequence.class).newInstance(UserHandle.class.getDeclaredConstructor(int.class).newInstance(0), BuildConfig.APPLICATION_ID, volteIcon, 0, 0, VO_LTE_SLOT);
volteStatusbarIconHolder = StatusBarIconHolderClass.newInstance();
setObjectField(volteStatusbarIconHolder, "mIcon", volteStatusbarIcon);
volteStatusbarIconHolder = getStatusbarIconHolderFor(volteStatusbarIcon);

Icon vowifiIcon = Icon.createWithResource(BuildConfig.APPLICATION_ID, R.drawable.ic_vowifi);
//noinspection JavaReflectionMemberAccess
Object vowifiStatusbarIcon = StatusBarIconClass.getDeclaredConstructor(UserHandle.class, String.class, Icon.class, int.class, int.class, CharSequence.class).newInstance(UserHandle.class.getDeclaredConstructor(int.class).newInstance(0), BuildConfig.APPLICATION_ID, vowifiIcon, 0, 0, VO_WIFI_SLOT);
vowifiStatusbarIconHolder = StatusBarIconHolderClass.newInstance();
setObjectField(vowifiStatusbarIconHolder, "mIcon", vowifiStatusbarIcon);
vowifiStatusbarIconHolder = getStatusbarIconHolderFor(vowifiStatusbarIcon);

//noinspection DataFlowIssue
SystemUtils.TelephonyManager().registerTelephonyCallback(voDataExec, voDataCallback);
telephonyCallbackRegistered = true;
}
} catch (Exception ignored) {
}
} catch (Exception ignored) {}

updateVoData(true);
}

private void removeVoDataCallback() {
try {
//noinspection DataFlowIssue
SystemUtils.TelephonyManager().unregisterTelephonyCallback(voDataCallback);
telephonyCallbackRegistered = false;
} catch (Exception ignored) {
Expand Down Expand Up @@ -1327,6 +1346,7 @@ private void placeClock() {
if (index != null) {
targetArea.addView(mClockView, index);
} else {
//noinspection DataFlowIssue
targetArea.addView(mClockView);
}
}
Expand Down

0 comments on commit 8f31f2b

Please sign in to comment.