Skip to content

Commit bb50df6

Browse files
committed
fix: statusbaractions for home gesture
1 parent 14b01ee commit bb50df6

1 file changed

Lines changed: 51 additions & 38 deletions

File tree

library/hook/src/main/java/com/sevtinge/hyperceiler/hook/module/skip/StatusBarActions.java

Lines changed: 51 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
*/
1919
package com.sevtinge.hyperceiler.hook.module.skip;
2020

21+
import static androidx.core.content.ContextCompat.getSystemService;
22+
23+
import static com.sevtinge.hyperceiler.hook.utils.devicesdk.SystemSDKKt.isMoreAndroidVersion;
24+
2125
import android.annotation.SuppressLint;
2226
import android.content.BroadcastReceiver;
2327
import android.content.Context;
@@ -97,12 +101,12 @@ protected void after(MethodHookParam param) {
97101
intentfilter.addAction(StatusBarActionConstants.ACTION_RESTART_LAUNCHER);
98102
intentfilter.addAction(StatusBarActionConstants.ACTION_COPY_TO_EXTERNAL);
99103

100-
ContextCompat.registerReceiver(mStatusBarContext, mStatusBarReceiver, intentfilter, ContextCompat.RECEIVER_NOT_EXPORTED);
104+
ContextCompat.registerReceiver(mStatusBarContext, mStatusBarReceiver, intentfilter, ContextCompat.RECEIVER_EXPORTED);
101105
}
102106
});
103107
}
104108

105-
109+
@SuppressLint("UnsafeIntentLaunch")
106110
private static final BroadcastReceiver mStatusBarReceiver = new BroadcastReceiver() {
107111
@SuppressLint("WrongConstant")
108112
@Override
@@ -154,45 +158,54 @@ public void onReceive(Context context, Intent intent) {
154158
};
155159

156160
public static void OpenVolumeDialogs(Context context) {
157-
try {
158-
Object mVolumeComponent = XposedHelpers.getObjectField(mStatusBar, "mVolumeComponent");
159-
Object mVolumeDialogPlugin = XposedHelpers.getObjectField(mVolumeComponent, "mDialog");
160-
Object miuiVolumeDialog = XposedHelpers.getObjectField(mVolumeDialogPlugin, "mVolumeDialogImpl");
161-
if (miuiVolumeDialog == null) {
162-
logI("OpenVolumeDialog", "com.android.systemui", "MIUI volume dialog is NULL!");
163-
return;
161+
if (isMoreAndroidVersion(35)) {
162+
try {
163+
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
164+
audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_SAME, AudioManager.FLAG_SHOW_UI);
165+
} catch (Throwable t) {
166+
XposedBridge.log(t);
164167
}
168+
} else {
169+
try {
170+
Object mVolumeComponent = XposedHelpers.getObjectField(mStatusBar, "mVolumeComponent");
171+
Object mVolumeDialogPlugin = XposedHelpers.getObjectField(mVolumeComponent, "mDialog");
172+
Object miuiVolumeDialog = XposedHelpers.getObjectField(mVolumeDialogPlugin, "mVolumeDialogImpl");
173+
if (miuiVolumeDialog == null) {
174+
logI("OpenVolumeDialog", "com.android.systemui", "MIUI volume dialog is NULL!");
175+
return;
176+
}
165177

166-
Handler mHandler = (Handler) XposedHelpers.getObjectField(miuiVolumeDialog, "mHandler");
167-
mHandler.post(() -> {
168-
boolean mShowing = XposedHelpers.getBooleanField(miuiVolumeDialog, "mShowing");
169-
boolean mExpanded = XposedHelpers.getBooleanField(miuiVolumeDialog, "mExpanded");
170-
171-
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
172-
boolean isInCall = am.getMode() == AudioManager.MODE_IN_CALL || am.getMode() == AudioManager.MODE_IN_COMMUNICATION;
173-
if (mShowing) {
174-
if (mExpanded || isInCall)
175-
XposedHelpers.callMethod(miuiVolumeDialog, "dismissH", 1);
176-
else {
177-
Object mDialogView = XposedHelpers.getObjectField(miuiVolumeDialog, "mDialogView");
178-
View mExpandButton = (View) XposedHelpers.getObjectField(mDialogView, "mExpandButton");
179-
View.OnClickListener mClickExpand = (View.OnClickListener) XposedHelpers.getObjectField(mDialogView, "expandListener");
180-
mClickExpand.onClick(mExpandButton);
181-
}
182-
} else {
183-
Object mController = XposedHelpers.getObjectField(mVolumeDialogPlugin, "mController");
184-
if (isInCall) {
185-
XposedHelpers.callMethod(mController, "setActiveStream", 0);
186-
XposedHelpers.setBooleanField(miuiVolumeDialog, "mNeedReInit", true);
187-
} else if (am.isMusicActive()) {
188-
XposedHelpers.callMethod(mController, "setActiveStream", 3);
189-
XposedHelpers.setBooleanField(miuiVolumeDialog, "mNeedReInit", true);
178+
Handler mHandler = (Handler) XposedHelpers.getObjectField(miuiVolumeDialog, "mHandler");
179+
mHandler.post(() -> {
180+
boolean mShowing = XposedHelpers.getBooleanField(miuiVolumeDialog, "mShowing");
181+
boolean mExpanded = XposedHelpers.getBooleanField(miuiVolumeDialog, "mExpanded");
182+
183+
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
184+
boolean isInCall = am.getMode() == AudioManager.MODE_IN_CALL || am.getMode() == AudioManager.MODE_IN_COMMUNICATION;
185+
if (mShowing) {
186+
if (mExpanded || isInCall)
187+
XposedHelpers.callMethod(miuiVolumeDialog, "dismissH", 1);
188+
else {
189+
Object mDialogView = XposedHelpers.getObjectField(miuiVolumeDialog, "mDialogView");
190+
View mExpandButton = (View) XposedHelpers.getObjectField(mDialogView, "mExpandButton");
191+
View.OnClickListener mClickExpand = (View.OnClickListener) XposedHelpers.getObjectField(mDialogView, "expandListener");
192+
mClickExpand.onClick(mExpandButton);
193+
}
194+
} else {
195+
Object mController = XposedHelpers.getObjectField(mVolumeDialogPlugin, "mController");
196+
if (isInCall) {
197+
XposedHelpers.callMethod(mController, "setActiveStream", 0);
198+
XposedHelpers.setBooleanField(miuiVolumeDialog, "mNeedReInit", true);
199+
} else if (am.isMusicActive()) {
200+
XposedHelpers.callMethod(mController, "setActiveStream", 3);
201+
XposedHelpers.setBooleanField(miuiVolumeDialog, "mNeedReInit", true);
202+
}
203+
XposedHelpers.callMethod(miuiVolumeDialog, "showH", 1);
190204
}
191-
XposedHelpers.callMethod(miuiVolumeDialog, "showH", 1);
192-
}
193-
});
194-
} catch (Throwable t) {
195-
XposedBridge.log(t);
205+
});
206+
} catch (Throwable t) {
207+
XposedBridge.log(t);
208+
}
196209
}
197210
}
198211

0 commit comments

Comments
 (0)