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

Многие пользователи Android хотят, чтобы был более простой способ перезагрузки в режиме восстановления, без необходимости сначала выключать свое устройство. Это руководство для Samsung Galaxy S7 Edge поможет вам добавить кнопку «Восстановление после перезагрузки» в меню «Питание» внутри системы Android.

Мы будем работать с файлами framework-res.apk и services.jar со стандартного ПЗУ, поэтому, если вы пользуетесь нестандартным ПЗУ, это руководство не предназначено для вас. Я предоставил ссылки для загрузки файлов stock framework-res.apk и services.jar ниже.

Требования:

  • APK Easy Tool
  • S7 Edge Framework .zip
  • S7 Edge Services jar .zip
  • ADB — см. «Как установить ADB в Windows»
  1. Поэтому первое, что вам нужно сделать, это загрузить и распаковать вышеупомянутые ZIP-файлы на свой рабочий стол.
  2. Также загрузите APK Easy Tool.
  3. Теперь включите отладку по USB на Galaxy S7, перейдя в «Настройки»> «О программе»> 7 раз нажмите «Номер сборки», пока не активируется режим разработчика. Теперь перейдите в «Настройки»> «Параметры разработчика»> «Включить отладку по USB».
  4. Подключите ваш Galaxy S7 к ПК через USB и, удерживая Shift + правый клик внутри вашей основной папки ADB, выберите «Открыть окно команд здесь».
  5. Теперь убедитесь, что ADB распознает ваше устройство, напечатав «adb devices» без кавычек. В случае успеха командный терминал должен отображать серийный номер вашего устройства.
  6. Теперь введите следующие команды в окне ADB:

adb pull /system/framework/framework-res.apk
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 ​​/ arrays.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 и скопируйте файлы из ZIP-файла Services jar, который я предоставил выше, во вновь декомпилированную папку Services.jar.
  • Теперь, используя текстовый редактор, откройте smali / com / android / server / policy / GlobalActions.smali, и вы снова добавите жирный шрифт строка в полях # instance

.поле mEmergencyStringId: I
.поле private mRebootRecovery: Lcom / android / сервер / 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-объект v5, v0, Lcom / android / сервер / policy / GlobalActions; -
> MRestart: Lcom / Android / сервер / политика / GlobalActions $ SinglePressAction;
new-instance v4, Lcom / android / server / policy / GlobalActions $ 47;
move-object / from16 v0, p0
iget-объект v0, v0, Lcom / android / server / policy / GlobalActions; -> mContext: Landroid / content / Context;
invoke-virtual {v0}, Landroid / content / Context; -> getResources () Landroid / content / res / Resources;
перемещение-результат-объект v0
const-string v1, "tw_ic_do_rebootrecovery"
const-string v2, "отрисовка"
const-string v3, "андроид"
invoke-virtual {v0, v1, v2, v3}, Landroid / content / res / Resources; -> getIdentifier (Ljava / lang / String; Ljava / lang / String; Ljava / lang / String;) I
ход-результат v5
move-object / from16 v0, p0
iget-объект v0, v0, Lcom / android / server / policy / GlobalActions; -> mContext: Landroid / content / Context;
invoke-virtual {v0}, Landroid / content / Context; -> getResources () Landroid / content / res / Resources;
перемещение-результат-объект v0
const-string v1, "tw_ic_do_rebootrecovery"
const-string v2, "строка"
const-string v3, "андроид"
invoke-virtual {v0, v1, v2, v3}, Landroid / content / res / Resources; -> getIdentifier (Ljava / lang / String; Ljava / lang / String; Ljava / lang / String;) I
ход-результат 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-объект 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 / сервер / политика / 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-объект v5, v0, Lcom / android / сервер / policy / GlobalActions; -> mItems: Ljava / util / ArrayList;
const / 16 v6, 0x100
move-object / from16 v0, p
iget-объект v4, v0, Lcom / android / сервер / policy / GlobalActions; -> mRebootRecovery: Lcom / android / server / policy / GlobalActions $ SinglePressAction;
move-object / from16 v0, p0
iget-объект v5, v0, Lcom / android / сервер / 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
  • Теперь найдите const-string / jumbo v4, «silent» и добавьте эти строки над ним. Две жирные линии должны совпадать.
const-string / jumbo v4, "аварийный режим"
invoke-virtual {v4, v11}, Ljava / lang / String; -> равно (Ljava / lang / Object;) Z
ход-результат v4
if-eqz v4,: cond_15
move-object / from16 v0, p0
iget-объект v4, v0, Lcom / android / сервер / 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
Перейти к / 16:goto_7
: cond_15
const-string / jumbo v4, "rebootrecovery"
invoke-virtual {v4, v11}, Ljava / lang / String; -> равно (Ljava / lang / Object;) Z
ход-результат v4
if-eqz v4,: cond_asc1
move-object / from16 v0, p0
iget-объект v4, v0, Lcom / android / сервер / policy / GlobalActions; -> mItems: Ljava / util / ArrayList;
move-object / from16 v0, p0
iget-объект v5, v0, Lcom / android / сервер / policy / GlobalActions; -> mRebootRecovery: Lcom / android / server / policy / GlobalActions $ SinglePressAction;
invoke-virtual {v4, v5}, Ljava / util / ArrayList; -> add (Ljava / lang / Object;) Z
Перейти к / 16:goto_7
: cond_asc1
const-string / jumbo v4, "тихий"

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

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

.метод статического синтетического доступа $ 500 (Lcom / android / сервер / policy / GlobalActions;) Landroid / content / Context;
.locals 1
iget-объект v0, p0, Lcom / android / server / policy / GlobalActions; -> mContext: Landroid / content / Context;
возвратный объект v0
метод .end

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

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

Ссылка на основную публикацию