SystemUI Quick Toggles Background にフックして、選択した色に応じて変更しました。変更可能な色ではなく、最初に静的な色に変更しようとしています。
問題は、このコードを実行すると、機能する場合と機能しない場合があり、ログを確認して、同じことを言っていることです。
電話をロックすると、元の色に戻ります。
あなたができるように、それはビューです。私はSystemUIのdex2jarを持っていて、それをライブラリとして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);
}
}