Как добавить кнопку восстановления перезагрузки в меню питания Galaxy S7 Edge

adb pull /system/framework/services.jar



Перейдите в папку по вашему выбору.

  1. Теперь откройте APK Easy Tool и выберите «Выбрать» рядом с « APK-файл для работы ». Выберите framework-res.apk, который вы вытащили из своего Galaxy S7. Теперь нажмите кнопку «Декомпилировать».



  1. Теперь перейдите в каталог декомпилированного файла .APK и вставьте файлы из файла .zip framework-res, который я предоставил, в папку декомпилированная папка вашего framework-res.apk.
  2. Теперь, используя текстовый редактор, я действительно рекомендую что-то вроде Notepad ++, который может организовать XML-код, откройте файл res / values ​​/ array.xml.
  3. А теперь мы перейдем к действительно техническим вопросам. Вам нужно добавить все строки, которые я отображаю в смелый в следующих фрагментах кода.
  4. Найти и Добавить что я жирный.

мощность
datamode
самолет
рестарт
карантин
сообщение об ошибке
пользователи
восстановление перезагрузки
аварийный режим
подэкран
Screenrec



  • Теперь перейдите в res / values ​​/ strings.xml и Добавить в смелый .

Зарядка подключенного устройства через USB…
10,32,768,10,60
Восстановление перезагрузки



  • Хорошо, мы закончили с framework-res.apk. Теперь вы можете перекомпилировать его в APK Easy Tool.
  • Теперь мы собираемся работать с Services.jar, поэтому декомпилируйте Services.jar с помощью APK Easy Tool и скопируйте файлы из архива Services jar .zip, который я предоставил выше, в недавно декомпилированную папку Services.jar.
  • Теперь, используя текстовый редактор, откройте smali / com / android / server / policy / GlobalActions.smali, и снова вы собираетесь добавить жирный строка в # полях экземпляра

.field mEmergencyStringId: I
.field приватный mRebootRecovery: Lcom / android / server / policy / GlobalActions $ SinglePressAction;

  • Теперь найдите ' .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; новый экземпляр v4, Lcom / android / server / policy / GlobalActions $ 47; переместить объект / 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;) Я перемещаю-результат 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;) Я 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; объект-результат-перемещения v4 const-string / jumbo v5, 'CscFeature_Common_ConfigBikeMode'
  • Следующая часть сложная, вам нужно добавить жирные линии и измените подчеркнутый.
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 новый экземпляр 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; переместить объект / 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 # раньше было 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
  • Теперь ищите константная строка / jumbo v4 , «Без звука» и добавьте эти строки над ним. Две жирные линии должны совпадать.
const-string / jumbo v4, 'Emergencymode' invoke-virtual {v4, v11}, Ljava / lang / String; -> равно (Ljava / lang / Object;) Z move-result v4 if-eqz v4,: cond_15 move- объект / from16 v0, p0 iget-object v4, v0, Lcom / android / server / policy / GlobalActions; -> mItems: Ljava / util / ArrayList; переместить объект / 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; -> добавить (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 переместить объект / from16 v0, p0 iget-object v4, v0, Lcom / android / server / policy / GlobalActions; -> mItems: Ljava / util / ArrayList; переместить объект / 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; -> добавить (Ljava / lang / Object;) Z goto / 16: goto_7 : cond_asc1 const-string / jumbo v4, 'без звука

Затем нам нужно добавить недостающую часть services.jar в Android 7, поэтому мы собираемся добавить ее повторно, чтобы этот мод работал.
Найдите строку для .method private addCustomDialogItems (Landroid / graphics / drawable / BitmapDrawable; Ljava / lang / String; Landroid / content / Intent; ILjava / util / ArrayList;) Z

И добавьте этот метод выше:



.method статический синтетический доступ 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 метод

Вот и все, теперь перекомпилируйте services.jar, и вы можете отправить перекомпилированный framework-res.apk и services.jar обратно на свой телефон, либо с помощью adb push или с помощью кнопки APK Easy Tool «Установить на телефон».

Если вы получаете цикл загрузки после нажатия на телефон, загрузитесь в пользовательское восстановление и протрите Дальвик + Кэш.

3 минуты на чтение