Hinzufügen der Schaltfläche “Wiederherstellung neu starten” zum Galaxy S7 Edge Power-Menü

Viele Android-Benutzer wünschen sich eine einfachere Möglichkeit, den Wiederherstellungsmodus neu zu starten, ohne das Gerät zuerst ausschalten zu müssen. Mit dieser Anleitung für das Samsung Galaxy S7 Edge können Sie dem Power-Menü im Android-System eine Schaltfläche zum Wiederherstellen der Wiederherstellung hinzufügen.

Wir werden in den Dateien framework-res.apk und services.jar des Standard-ROM arbeiten. Wenn Sie sich also in einem benutzerdefinierten ROM befinden, ist dieses Handbuch nicht für Sie bestimmt. Ich habe unten Links zum Herunterladen der Dateien stock framework-res.apk und services.jar bereitgestellt.

Bedarf:

  1. Als erstes müssen Sie die oben genannten ZIP-Dateien herunterladen und auf Ihren Desktop extrahieren.
  2. Laden Sie auch das APK Easy Tool herunter.
  3. Aktivieren Sie nun das USB-Debugging auf Ihrem Galaxy S7, indem Sie sieben Mal auf Einstellungen> Info> auf Build-Nummer tippen, bis der Entwicklermodus aktiviert ist. Gehen Sie nun zu Einstellungen> Entwickleroptionen> USB-Debugging aktivieren.
  4. Schließen Sie Ihr Galaxy S7 über USB an Ihren PC an, halten Sie Umschalt + Rechtsklick in Ihrem ADB-Hauptordner gedrückt und wählen Sie “Hier ein Befehlsfenster öffnen”.
  5. Stellen Sie nun sicher, dass ADB Ihr Gerät erkennt, indem Sie ‘ADB-Geräte‘ ohne die Anführungszeichen. Bei Erfolg sollte das Befehlsterminal die Seriennummer Ihres Geräts anzeigen.
  6. Geben Sie nun die folgenden Befehle in das ADB-Fenster ein:

adb pull /system/framework/framework-res.apk
adb pull /system/framework/services.jar

Ändern Sie das in einen Ordner Ihrer Wahl.

  1. Öffnen Sie nun das APK Easy Tool und wählen Sie Auswählen neben “APK-Datei zum Bearbeiten”. Wählen Sie das Framework-res.apk, das Sie von Ihrem Galaxy S7 abgerufen haben. Klicken Sie nun auf die Schaltfläche Dekompilieren.

  1. Gehen Sie nun in das Verzeichnis der dekompilierten APK-Datei und fügen Sie die Dateien aus der von mir bereitgestellten Framework-Res-ZIP-Datei in die ein dekompilierter Ordner Ihres Frameworks-res.apk.
  2. Jetzt mit einem Texteditor empfehle ich wirklich etwas wie Notepad ++, das XML-Code organisieren kann, öffnen Sie die Datei res / values ​​/ arrays.xml
  3. Jetzt werden wir hier wirklich technisch. Sie müssen alle Zeilen hinzufügen, in denen ich angezeigt werde Fett gedruckt in den folgenden Codeausschnitten.
  4. Suchen Sie nach und hinzufügen was ich habe fett gedruckt.

power
Datenmodus
Flugzeug
restart
Lockdown
Bugreport
Benutzer
rebootrecovery
emergencymode
Subscreen
screenrec

  • Gehen Sie nun zu res / values ​​/ strings.xml und hinzufügen das Fett gedruckt.

Laden des angeschlossenen Geräts über USB…
10,32,768,10,60
Starten Sie die Wiederherstellung neu

  • Okay, wir sind fertig mit Framework-res.apk. Sie können es jetzt in APK Easy Tool neu kompilieren.
  • Jetzt werden wir an Services.jar arbeiten, also dekompilieren Sie Services.jar mit APK Easy Tool und kopieren Sie die Dateien aus der oben angegebenen ZIP-Datei für Services jar in den neu dekompilierten Ordner Services.jar.
  • Öffnen Sie nun mit einem Texteditor smali / com / android / server / policy / GlobalActions.smali, und fügen Sie erneut das hinzu fett gedruckt Zeile in den # Instanzfeldern

.field mEmergencyStringId: I.
.field private mRebootRecovery: Lcom / android / server / policy / GlobalActions $ SinglePressAction;

  • Finden Sie jetzt “.method private createDialog () Lcom / android / server / policy / GlobalActions $ GlobalActionsDialog;

if-eqz v4, :cond_8
    const v4, 0x10809f4
    :goto_4
    const v6, 0x10406e2
    move-object/from16 v0, p0
    invoke-direct {v5, v0, v4, v6}, Lcom/android/server/policy/GlobalActions$20;->(Lcom/android/server/policy/GlobalActions;II)V
    move-object/from16 v0, p0
iput-object v5, v0, Lcom/android/server/policy/GlobalActions;-
>mRestart:Lcom/android/server/policy/GlobalActions$SinglePressAction;   
    new-instance v4, Lcom/android/server/policy/GlobalActions$47;
    move-object/from16 v0, p0
    iget-object v0, v0, Lcom/android/server/policy/GlobalActions;->mContext:Landroid/content/Context;
    invoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
    move-result-object v0
    const-string v1, "tw_ic_do_rebootrecovery" 
    const-string v2, "drawable" 
    const-string v3, "android"
    invoke-virtual {v0, v1, v2, v3}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
    move-result v5 
    move-object/from16 v0, p0
    iget-object v0, v0, Lcom/android/server/policy/GlobalActions;->mContext:Landroid/content/Context;
    invoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
    move-result-object v0
    const-string v1, "tw_ic_do_rebootrecovery"
    const-string v2, "string"
    const-string v3, "android"
    invoke-virtual {v0, v1, v2, v3}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
    move-result v6
    move-object/from16 v0, p0
    invoke-direct {v4, v0, v5, v6}, Lcom/android/server/policy/GlobalActions$47;->(Lcom/android/server/policy/GlobalActions;II)V
    move-object/from16 v0, p0
    iput-object v4, v0, Lcom/android/server/policy/GlobalActions;->mRebootRecovery:Lcom/android/server/policy/GlobalActions$SinglePressAction; 
    invoke-static {}, Lcom/samsung/android/feature/SemCscFeature;->getInstance()Lcom/samsung/android/feature/SemCscFeature;
    move-result-object v4
    const-string/jumbo v5, "CscFeature_Common_ConfigBikeMode"
  • Der nächste Teil ist schwierig, das müssen Sie Fügen Sie die fetten Linien hinzu und Ändern Sie die unterstrichenen.
const/16 v6, 0x80
    const/4 v7, 0x1
    move-object/from16 v0, p0
    invoke-direct {v0, v6, v4, v5, v7}, Lcom/android/server/policy/GlobalActions;->addDialogItemsIfEnabled(ILcom/android/server/policy/GlobalActions$Action;Ljava/util/ArrayList;Z)Z
    new-instance v4, 
Lcom/android/server/policy/GlobalActions$BugReportAction;
    move-object/from16 v0, p0
    invoke-direct {v4, v0}, Lcom/android/server/policy/GlobalActions$BugReportAction;->(Lcom/android/server/policy/GlobalActions;)V
    move-object/from16 v0, p0
    iget-object v5, v0, Lcom/android/server/policy/GlobalActions;->mItems:Ljava/util/ArrayList;
    const/16 v6, 0x100
    move-object/from16 v0, p
    iget-object v4, v0, Lcom/android/server/policy/GlobalActions;->mRebootRecovery:Lcom/android/server/policy/GlobalActions$SinglePressAction;
    move-object/from16 v0, p0
    iget-object v5, v0, Lcom/android/server/policy/GlobalActions;->mItems:Ljava/util/ArrayList;
    const/4 v7, 0x1
    move-object/from16 v0, p0
    invoke-direct {v0, v6, v4, v5, v7}, Lcom/android/server/policy/GlobalActions;->addDialogItemsIfEnabled(ILcom/android/server/policy/GlobalActions$Action;Ljava/util/ArrayList;Z)Z 
    const/16 v6, 0x200 #before was 0x100
    const/4 v7, 0x1
    move-object/from16 v0, p0
    invoke-direct {v0, v6, v4, v5, v7}, Lcom/android/server/policy/GlobalActions;->addDialogItemsIfEnabled(ILcom/android/server/policy/GlobalActions$Action;Ljava/util/ArrayList;Z)Z
  • Suchen Sie nun nach const-string / jumbo v4, “Still” und fügen Sie diese Zeilen darüber hinzu. Die beiden fettgedruckten Linien müssen übereinstimmen.
const-string/jumbo v4, "emergencymode"
    invoke-virtual {v4, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
    move-result v4
    if-eqz v4, :cond_15
    move-object/from16 v0, p0
    iget-object v4, v0, Lcom/android/server/policy/GlobalActions;->mItems:Ljava/util/ArrayList;
    move-object/from16 v0, p0
    iget-object v5, v0, Lcom/android/server/policy/GlobalActions;->mEmergency:Lcom/android/server/policy/GlobalActions$ToggleAction;
    invoke-virtual {v4, v5}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

goto/16 :goto_7
    :cond_15
    const-string/jumbo v4, "rebootrecovery"
    invoke-virtual {v4, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
    move-result v4
    if-eqz v4, :cond_asc1
    move-object/from16 v0, p0
    iget-object v4, v0, Lcom/android/server/policy/GlobalActions;->mItems:Ljava/util/ArrayList;
    move-object/from16 v0, p0
    iget-object v5, v0, Lcom/android/server/policy/GlobalActions;->mRebootRecovery:Lcom/android/server/policy/GlobalActions$SinglePressAction;
    invoke-virtual {v4, v5}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
    goto/16 :goto_7 
    :cond_asc1
    const-string/jumbo v4, "silent"

Als nächstes müssen wir einen fehlenden Teil von Android 7 services.jar hinzufügen, also werden wir ihn erneut hinzufügen, damit dieser Mod funktioniert.
Suchen Sie die Zeile für .method private addCustomDialogItems (Landroid / graphics / drawable / BitmapDrawable; Ljava / lang / String; Landroid / content / Intent; ILjava / util / ArrayList;) Z.

Und fügen Sie diese obige Methode hinzu:

.method static synthetic access$500(Lcom/android/server/policy/GlobalActions;)Landroid/content/Context;
    .locals 1
    iget-object v0, p0, Lcom/android/server/policy/GlobalActions;->mContext:Landroid/content/Context;
    return-object v0
.end method

Das war’s, kompilieren Sie jetzt die Datei services.jar neu, und Sie können sowohl die neu kompilierte Framework-res.apk als auch die Datei services.jar entweder mit auf Ihr Telefon zurückschieben adb push Befehl oder mit der APK Easy Tool-Schaltfläche „Auf Telefon installieren“.

Wenn Sie nach dem Drücken auf das Telefon eine Startschleife erhalten, starten Sie die benutzerdefinierte Wiederherstellung und löschen Sie sie Dalvik + Cache.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *