Cum se adaugă butonul de recuperare a repornirii în meniul de alimentare Galaxy S7 Edge

adb pull /system/framework/services.jar



Schimbați un dosar la alegere.

  1. Acum deschideți APK Easy Tool și alegeți Selectați lângă „ Fișier APK pentru a lucra ”. Alegeți framework-res.apk pe care l-ați scos de pe Galaxy S7. Acum faceți clic pe butonul Decompilați.



  1. Acum intrați în directorul fișierului .APK decompilat și lipiți fișierele din fișierul .zip framework-res pe care l-am furnizat în folder decompilat din framework-res.apk.
  2. Acum, folosind un editor de text, recomand cu adevărat ceva de genul Notepad ++ care poate organiza codul XML, deschide res / values ​​/ arrays.xml
  3. Acum, aici vom deveni cu adevărat tehnici. Trebuie să adăugați toate liniile pe care le afișez îndrăzneţ în următoarele fragmente de cod.
  4. Gaseste si adăuga ceea ce am îndrăzneț.

putere
datamode
avion
repornire
carantină
raport de erori
utilizatori
rebootrecovery
modul de urgență
subscreen
screenrec



  • Acum accesați res / values ​​/ strings.xml și adăuga îndrăzneţ .

Se încarcă dispozitivul conectat prin USB ...
10,32,768,10,60
Reporniți recuperarea



  • Bine, am terminat cu framework-res.apk. Acum îl puteți recompila în APK Easy Tool.
  • Acum vom lucra pe Services.jar, decompilați Services.jar cu APK Easy Tool și copiați fișierele din fișierul .zip jar Servicii furnizat mai sus în folderul Services.jar nou decompilat.
  • Acum, folosind un editor de text, deschideți smali / com / android / server / policy / GlobalActions.smali și, din nou, veți adăuga îndrăzneț linie în câmpurile # instanță

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

  • Acum găsiți „ .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; noua instanță v4, Lcom / android / server / policy / GlobalActions 47 USD; 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'
  • Următoarea parte este dificilă, trebuie adăugați liniile îndrăznețe și modificați subliniatul.
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 instanță nouă 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
  • Acum căutați const-string / jumbo v4 , „Tăcut” și adăugați aceste rânduri deasupra acestuia. Cele două linii cu caractere aldine trebuie să se potrivească.
const-string / jumbo v4, 'emergencymode' invoke-virtual {v4, v11}, Ljava / lang / String; -> egals (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 go / 16: merge_7 : cond_15 const-string / jumbo v4, 'rebootrecovery' invoke-virtual {v4, v11}, Ljava / lang / String; -> egals (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 go / 16: merge_7 : cond_asc1 const-string / jumbo v4, 'silent'

În continuare, trebuie să adăugăm o parte lipsă a serviciilor Android 7.jar, așa că o vom adăuga din nou pentru ca acest mod să funcționeze.
Găsiți linia pentru .method private addCustomDialogItems (Landroid / graphics / drawable / BitmapDrawable; Ljava / lang / String; Landroid / content / Intent; ILjava / util / ArrayList;) Z

Și adăugați această metodă de mai sus:



.metodă acces sintetic static 500 USD (Lcom / android / server / policy / GlobalActions;) Landroid / content / Context; .locals 1 iget-object v0, p0, Lcom / android / server / policy / GlobalActions; -> mContext: Landroid / content / Context; metoda return-object v0 .end

Asta e, acum recompilați services.jar și puteți împinge atât recompiled framework-res.apk, cât și services.jar înapoi pe telefon, fie cu adb push comanda sau cu APK Easy Tool butonul „Instalare pe telefon”.

Dacă primiți bucla de încărcare după ce ați apăsat pe telefon, porniți în recuperare personalizată și ștergeți Dalvik + Cache.

3 minute citite