[英]Xposed - Code Doesn't Change SystemUI Quick Toggles BG as intended
我正在進入SystemUI Quick Toggles Background,並根據所選顏色進行了更改,我試圖先將其更改為靜態顏色,而不是更改顏色。
問題是,在執行此代碼時,有時它可以工作,有時它不起作用,檢查日志,它說的是我輸入的相同。
當我鎖定手機時,它會恢復原始顏色。
你可以,它是一個視圖,我有dex2jar SystemUI,並將其作為一個庫添加到我的APK項目,並實現了類並修改它。
它有什么問題?
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.InsetDrawable;
import android.util.Log;
import com.android.systemui.qs.QSContainer;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
public class Test2 {
private static QSContainer mQSContainer;
static final int mSystemUIPrimaryColor = ColorsUtils.primary;
public static void hook()
{
try
{
XposedHelpers.findAndHookMethod(QSContainer.class, "onFinishInflate", new XC_MethodHook()
{
@Override
protected void afterHookedMethod(MethodHookParam HookParm)
throws Throwable {
mQSContainer = (QSContainer) HookParm.thisObject;
Log.i(Test1.TAG,"First Hook, Test2");
SetUpBackground();
}
});
}
catch (Exception e)
{
XposedBridge.log(e);
}
}
public static void SetUpBackground()
{
Log.i(Test1.TAG, "SetUpBackground, Test2");
GradientDrawable localGradientDrawable = new GradientDrawable();
localGradientDrawable.setCornerRadius(2.0F);
localGradientDrawable.setColor(mSystemUIPrimaryColor);
Drawable localObject = new InsetDrawable(localGradientDrawable, 0, -2, 0, 0);
mQSContainer.setBackground(localObject);
//mQSContainer.setBackgroundColor(mSystemUIPrimaryColor);
}
}
我的猜測是onFinishInflate僅被調用一次,因此隨后的重繪,原始將被重繪。 嘗試掛鈎此類的onDraw方法並在那里注入相同的修改。
嘗試並更新主線程中的背景:
// Get a handler that can be used to post to the main thread
Handler mainHandler = new Handler(context.getMainLooper());
Runnable myRunnable = new Runnable() {
@Override
public void run() {
SetUpBackground();
}
};
mainHandler.post(myRunnable);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.