Como adicionar o botão de recuperação de reinicialização ao menu de energia do Galaxy S7 Edge

adb pull /system/framework/services.jar



Altere o para uma pasta de sua escolha.

  1. Agora abra o APK Easy Tool e escolha Selecionar ao lado de “ Arquivo APK para trabalhar ”. Escolha o framework-res.apk que você retirou do Galaxy S7. Agora clique no botão Decompile.



  1. Agora vá para o diretório do arquivo .APK descompilado e cole os arquivos do arquivo .zip da estrutura que forneci no pasta descompilada de seu framework-res.apk.
  2. Agora, usando um editor de texto, eu realmente recomendo algo como o Notepad ++ que pode organizar o código XML, abra o res / values ​​/ arrays.xml
  3. Agora é aqui que vamos ser realmente técnicos. Você precisa adicionar todas as linhas que eu exibo em negrito nos seguintes recortes de código.
  4. Encontre e adicionar o que eu tenho negrito.

poder
datamode
avião
reiniciar
confinamento
relatório de erro
Comercial
rebootrecuperação
modo de emergência
subtela
screenrec



  • Agora vá para res / values ​​/ strings.xml e adicionar a negrito .

Carregando dispositivo conectado via USB…
10,32,768,10,60
Reinicializar a recuperação



  • Ok, terminamos com framework-res.apk. Agora você pode recompilar no APK Easy Tool.
  • Agora vamos trabalhar no Services.jar, então descompile o Services.jar com o APK Easy Tool e copie os arquivos do arquivo .zip Services jar que forneci acima para a pasta Services.jar recém-descompilada.
  • Agora, usando um editor de texto, abra smali / com / android / server / policy / GlobalActions.smali e, novamente, você adicionará o negrito linha nos campos de # instância

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

  • Agora encontre “ .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 / política / GlobalActions $ SinglePressAction; nova instância 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 / política / 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'
  • A próxima parte é complicada, você precisa adicione as linhas em negrito e modifique o sublinhado.
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 nova instância 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 #antes era 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
  • Agora procure por const-string / jumbo v4 , “Silencioso” e adicione essas linhas acima dele. As duas linhas em negrito devem corresponder.
const-string / jumbo v4, 'emergênciamode' 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, 'silencioso'

Em seguida, precisamos adicionar uma parte ausente do Android 7 services.jar, então vamos adicioná-lo novamente para que este mod funcione.
Encontre a linha para .method private addCustomDialogItems (Landroid / graphics / drawable / BitmapDrawable; Ljava / lang / String; Landroid / content / Intent; ILjava / util / ArrayList;) Z

E adicione este método acima:



.method acesso sintético estático $ 500 (Lcom / android / server / policy / GlobalActions;) Landroid / content / Context; .locals 1 iget-object v0, p0, Lcom / android / server / policy / GlobalActions; -> mContext: Landroid / content / Context; método return-object v0 .end

É isso, agora recompile o services.jar, e você pode enviar o framework-res.apk e services.jar recompilados de volta para o seu telefone, com adb push ou com o botão “Instalar no telefone” do APK Easy Tool.

Se você obtiver o loop de inicialização após empurrar para o telefone, inicialize na recuperação personalizada e limpe Dalvik + Cache.

3 minutos lidos