Comment ajouter le bouton de récupération de redémarrage au menu d'alimentation du Galaxy S7 Edge

adb pull /system/framework/services.jar



Remplacez le par un dossier de votre choix.

  1. Ouvrez maintenant APK Easy Tool et choisissez Sélectionner à côté de ' Fichier APK sur lequel travailler ». Choisissez le framework-res.apk que vous avez extrait de votre Galaxy S7. Cliquez maintenant sur le bouton Décompiler.



  1. Allez maintenant dans le répertoire du fichier .APK décompilé et collez les fichiers du fichier .zip framework-res que j'ai fourni dans le dossier décompilé de votre framework-res.apk.
  2. Maintenant en utilisant un éditeur de texte, je recommande vraiment quelque chose comme Notepad ++ qui peut organiser le code XML, ouvrez le res / values ​​/ arrays.xml
  3. Maintenant, voici où nous allons devenir vraiment technique. Vous devez ajouter toutes les lignes dans lesquelles j'affiche audacieux dans les extraits de code suivants.
  4. Trouve et ajouter ce que j'ai en gras.

Puissance
datamode
avion
redémarrer
confinement
rapport d'erreur
utilisateurs
récupération de redémarrage
mode d'urgence
sous-écran
screenrec



  • Allez maintenant à res / values ​​/ strings.xml et ajouter la audacieux .

Chargement de l'appareil connecté via USB…
10,32,768,10,60
Récupération de redémarrage



  • D'accord, nous en avons terminé avec framework-res.apk. Vous pouvez maintenant le recompiler dans APK Easy Tool.
  • Nous allons maintenant travailler sur Services.jar, alors décompilez Services.jar avec APK Easy Tool et copiez les fichiers du fichier .zip Services jar que j'ai fourni ci-dessus dans le dossier Services.jar récemment décompilé.
  • Maintenant, en utilisant un éditeur de texte, ouvrez smali / com / android / server / policy / GlobalActions.smali, et encore une fois, vous allez ajouter le en gras ligne dans les champs # instance

.field mEmergencyStringId: I
.field private mRebootRecovery: Lcom / android / serveur / stratégie / GlobalActions $ SinglePressAction;

  • Recherchez maintenant ' .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 / politique / GlobalActions $ SinglePressAction; nouvelle instance v4, Lcom / android / serveur / politique / 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 / serveur / stratégie / 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'
  • La partie suivante est délicate, vous devez ajouter les lignes en gras et modifiez le souligné.
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 nouvelle 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 était 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
  • Recherchez maintenant const-string / jumbo v4 , «Silencieux» et ajoutez ces lignes au-dessus. Les deux lignes en gras doivent correspondre.
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, 'silencieux'

Ensuite, nous devons ajouter une partie manquante d'Android 7 services.jar, nous allons donc la rajouter pour que ce mod fonctionne.
Trouvez la ligne pour .method private addCustomDialogItems (Landroid / graphics / drawable / BitmapDrawable; Ljava / lang / String; Landroid / content / Intent; ILjava / util / ArrayList;) Z

Et ajoutez cette méthode ci-dessus:



.method statique accès synthétique 500 $ (Lcom / android / serveur / politique / GlobalActions;) Landroid / content / Context; .locals 1 iget-object v0, p0, Lcom / android / server / policy / GlobalActions; -> mContext: Landroid / content / Context; méthode return-object v0 .end

Voilà, maintenant recompilez le fichier services.jar, et vous pouvez repousser à la fois le framework-res.apk et services.jar recompilés sur votre téléphone, soit avec push adb ou avec le bouton 'Installer sur le téléphone' de l'APK Easy Tool.

Si vous obtenez une boucle de démarrage après avoir poussé sur le téléphone, démarrez la récupération personnalisée et essuyez Dalvik + Cache.

3 minutes de lecture