2016-12-03 11 views
0

Приложение в Xposed Framework с именем «Network Speed ​​Indicator» может отображать сетевую скорость в строке состояния Android. Как достичь этого?Как Xposed framework изменяет статусную строку Android?

Я искал некоторые другие вопросы, такие как этот Customizing android status bar. Он сказал: «Это не имеет ничего общего с разработкой Android, его довольно взломать андроид. :) Но его очень просто, вам нужен root, вытащите framework-res.apk из (7Zip или WinRar), и у вас огромное количество pngs. Вам нужно только отредактировать их и переупаковать apk, подписать его и нажать на устройство и перезагрузить tadda ».

Есть ли так же, как и так?

ответ

0

Xposed фактически работает более интересным способом, он изменяет /system/bin/app_process, добавив банку (/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar, если быть точным), что позволяет «подключить» к любому вызову метода. В принципе, вы можете запускать свой собственный код до или после любого метода. Вот несколько примеров кода из the GitHub page:

package de.robv.android.xposed.mods.tutorial; 

import static de.robv.android.xposed.XposedHelpers.findAndHookMethod; 
import android.graphics.Color; 
import android.widget.TextView; 
import de.robv.android.xposed.IXposedHookLoadPackage; 
import de.robv.android.xposed.XC_MethodHook; 
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; 

public class Tutorial implements IXposedHookLoadPackage { 
    public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable { 
     if (!lpparam.packageName.equals("com.android.systemui")) 
      return; 

     findAndHookMethod("com.android.systemui.statusbar.policy.Clock", lpparam.classLoader, "updateClock", new XC_MethodHook() { 
      @Override 
      protected void afterHookedMethod(MethodHookParam param) throws Throwable { 
       TextView tv = (TextView) param.thisObject; 
       String text = tv.getText().toString(); 
       tv.setText(text + " :)"); 
       tv.setTextColor(Color.RED); 
      } 
     }); 
    } 
} 

Это перехватывает в метод обновления синхронизации пользовательского интерфейса системы и добавляет :) к тому времени, а также делает текст красным. Надеюсь, это даст вам некоторое представление о том, как все работает в Xposed.

Невероятное преимущество заключается в том, что вы не заменяете оригинальное приложение, поэтому не требуется процедура разблокировки подписей. Просто у вас есть оригинальное приложение, Xposed framework и ваш модуль.

Редактировать: Кроме того, просто распаковка и замена PNG не даст вам доступа к рабочему коду, поэтому скорость сети в строке состояния - это то, что требует от вас использования Xposed - вам нужно «закопать» код, который создает текст, который отображается в строке состояния.

+0

Спасибо! Это намного яснее после того, как я прошел учебное руководство по разработке, но то, как работает механизм «крюка», все еще меня смущает. Я пришел к тому, что в jni достигнут крючок. Есть ли еще какие-нибудь другие знания, которые я должен понять, чтобы понять этот механизм? – Zhang

 Смежные вопросы

  • Нет связанных вопросов^_^