Editieren der Settings.apk

  • Hallo Leute,
    ich brauche mal ein bisschen Hilfe.
    Um das Porten und Patchen ein bisschen zu lernen, wollte ich in mein ROM ein zusätzliches Menü in der Settings.apk einbauen...
    Das ROM das ich zum testen benutze ist die Miui 2.6.29 auf Basis des Sandvolt ROMs (CM9), die Funktion die ich einbinden möchte ist in dem BCM ROM (CM9) (alle fürs Desire)...


    Die Bilder unten sind aus dem BCM ROM, möchte es so ähnlich nachbauen...
    Den Button im Menü habe ich dort rein bekommen (Bild 1) Wenn man dort drauf drückt kommt im Original das Bild 2. Ich möchte aber direkt in das Menü, welches kommt, wenn man auf den markierten Button in Bild 2 drückt!


    Wie gesagt, den Button sieht man aber wenn man drauf drückt, gibts nen FC... :kp: Finde aber auch nirgendwo einen Aufruf Befehl dafür, damit die processor.xml aufgefrufen wird.
    Bild1: settings_header.xml
    Bild2: performance_settings.xml
    Bild3: processor_settings.xml


    Ich habe insgesamt bestimmt schon 6 Stunden daran gesessen und alle möglichen methods hin und her kopiert (all diejenigen, die das Logcat verlangt hat). Daher wäre es nett, wenn ihr mal sagt, wie ihr es machen würdet...


    Das hier ist meine settings_header.xml (MIUI)


    Alle dazugehörigen Datein findet ihr hier!


    Es wäre schön wenn ihr mir ein paar Tipps geben könntet...



    Vielen Dank schon mal!!!!


    Gruß
    ph87

  • Nur die xml für die settings kopieren tut es nicht.
    die eigentlichen funktionen findest du in den smalis der jars.. vermute mal framework oder services

  • Okay danke erst mal,..


    Wie könnte das ungefähr aussehen? Also wenn ich jetzt in der Settings.apk einen Button drücke wird in der framework.jar/services.jar dann das nächste Fenster aufgerufen? z.B. in meinem Fall die processor_settings.apk...
    Oder wie ist ungefähr die Funktionsweise hierbei? Könntest du mir das vielleicht noch mal ganz grob erklären? Nur damit ich die zusammenhänge verstehe...!

  • naaa ich habe bullshit erzählt :)


    du findest die smalis auch in den settings.. kann aber auch sein, dass teile davon noch woanders rumlungern.


    https://github.com/CyanogenMod…id_packages_apps_Settings
    so schaut die scheisse in java aus.


    und wenn du deine settings decompilierst und mit der von miui vergleichst siehst du ja, was dir fehlt.. aber mit einem einfachen c&p wirst du nicht erfolgreich sein :P
    Ja die xml geschichten sind ja nur das template.. diese rufen dann die eigentliches funktionen auf welche ja in java geschrieben sind.

  • In der >> src / com / android / settings / cyanogenmod / PerformanceSettings.Java finde ich z.B diese Zeile

    Code
    addPreferencesFromResource(R.xml.performance_settings);


    Aber in der smali kann ich die irgendwie nicht nachvollziehen...


    Wenn ich die Java Zeile richtig verstehe liest der die Preferences aus der perfomrance_Settings.xml aber wo ist der aufruf für das nächste Menü? (Ich meine: Button.gedrückt= true then open(beispiel.xml); ;) )


    Tut mir leid für die Noob-Fragen, würde es aber trotzdem gerne wissen!

  • So, neuer Anlauf...
    Habe zu spät gemerkt, das in dem Baserom (Sandvolt 8.1 )auch schon so eine Funktion drinne war, nur anders realisert wurde...!


    In dem Baserom ist eine APK mit dem Namen EVToolbox.apk die das alles übernimmt!


    Also wird eigentlich "nur" durch drücken eines Buttons in der Settings.apk die EVToolbox.apk geöffnet!?
    Sollte ja eigentlich einfacher sein als das, was ich vorher versucht habe...


    Meine angepasste Settings.apk ist HIER zu finden


    So, habe jetzt folgende Anpassungen gemacht:

    • in strings.xml kopiert
    • ids.xml angicon in drawable-hdpi kopiert
    • stringsepasst
    • public.xml angepasst
    • settings_header.xml angepasst
    • EVToolbox.apk kopiert


    Wenn ich die Settings.apk öffne und auf den erstellten Button drücke kommt folgende Fehlermeldung:




    Habe mal nachgeschaut, aber in der Settings.apk vom Baserom habe ich der Manifest.xml auch keinen Eintrag über die toolbox gefunden...


    Kann mir da bitte jemand helfen, google bringt mir da leider auch nichts... :sos:

  • Also wenn ich mir die Original manifest der EVToolbox angucke, ist die com.evervolv.toolbox.Settings aber deklariert,... oder verstehe ich das falsch?


    Code
    <activity android:label="@string/app_name" android:name="com.evervolv.toolbox.Settings" android:taskAffinity="com.evervolv.toolbox" android:launchMode="singleTask">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <action android:name="android.cyanogenmod.SETTINGS" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>


    Und irgendwie kann weiß ich nicht was ich mit deinem Link anfangen soll... Ich glaub ich bin zu doof dafür.. :hau: :wacko: :pinch:

  • Wir werden extra für dich einen persönlichen Betreuer einstellen. Entschuldige bitte, aber wir machen das hier in unserer Freizeit neben Familie und Beruf.

  • Ich wollte niemanden persönlich angreifen...
    Ich möchte mich hiermit auch bei allen entschuldigen....
    Ich war einfach enttäuscht das bei 120 Views keiner auch nur einen Satz geschrieben hat... es hätte ja schon ein kurzer Satz nach dem Motto: guck mal hier oder probier mal das..., gereicht!


    Naja, auf jeden Fall: es tut mir Leid!


    (Habe meinen entsprechenden Beitrag bereinigt)

  • Ist ja auch keine Thema.. nimmt dir keiner übel.
    Ich kann dir imo halt einfach nicht helfen, da ich einfach kein Zeit dazu habe, mir das genauer anzuschauen.


    Zum Thema Toolbox von miui.us, die kann man wohl nicht einfach so nehmen, aufgrund vom dem anti-kang schutz in den miui.us releases.

  • Vorher beglückwünschen bringt Unglück.. also warten wir da nochmal :)
    Ich werd mir das aber auf jedenfall, sofern ich dann mal Zeit habe nochmal genauer anschauen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!