꺼진 메뉴에 Reboot & Recovery & Bootloader 추가
1. 프레임워크-res.apk 1을 수정하고 역컴파일한 후res\drawable-hdpi\디렉터리에 세 장의 그림을 추가합니다.2、res\values\strings를 엽니다.xml, 맨 아래에 추가:
<string name="reboot">Reboot</string>
<string name="recovery">Recovery</string>
<string name="bootloader">Bootloader</string>
3. res\values-zh-rcn\strings. 열기xml, 맨 아래에 추가:
<string name="reboot"> </string>
<string name="recovery"> </string>
<string name="bootloader"> </string>
4. 프레임워크-res를 프레임워크-res-new로 재컴파일합니다.apk, 리소스 풀기.arsc는 압축되지 않는 형식으로 원본 프레임워크-res.apk에 교체한 후 세 장의 그림을 상응하는 위치에 추가합니다.
2. android를 수정합니다.policy.jar
1. com\android\internal\policy\impl\GlobalActions를 엽니다.smali 파일,.method private createDialog()Landroid/app/AlertDialog; 범위 내(전원 옵션) [Lcom/android/internal/policy/impl/Global Actions$Action; 찾은 후 수정: const/4 v0, 0x4 new-array v0, v0, [Lcom/android/internal/policy/impl/Global Actions$Action; 주: 0x4는 전원 옵션에 4개의 메뉴가 있음을 의미하며, 자신이 필요로 하는 항목의 수량으로 수정할 수 있습니다.
const/4 v1, 0x0
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$4;
const v3,0x1080030#
const v4,0x104011a#
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$4;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
이것은 완전한 메뉴 명령입니다.일반적으로 여러 개가 있는데, 그것들의 순서를 바꿀 수도 있고, 증가하거나 삭제할 수도 있다.
참고: 0x1080030은 framework-res\values\public.xml에 대응하는 수치는 0x01080030입니다.
일반적으로 수정하면 꺼진 명령을 복사해서 수정합니다. 수정된 부분은 위 코드의 빨간색 부분입니다.
3. 이 코드의 마지막 전체 끝은 다음과 같다.
invoke-static {v0}, Lcom/google/android/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;
move-result-object v0
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
따라서 명령을 추가할 때 이전 코드의 aput-object v2, v0, v1 뒤와 총 끝의 앞을 반드시 주의해야 한다.
4、GlobalActions$4.smali (꺼진 파일에 대응하는 파일) 세 부를 복사합니다. 각각 Global Actions $8.smali、
GlobalActions$9.smali、GlobalActions$10.smali(명명 규칙: Global Actions $xx.smali, "xx-1"은 마지막 수
자)
5、GlobalActions$8을 수정합니다.smali를 예로 들면 다음과 같습니다.
(1) 오픈 후 Global Actions$4를 Global Actions$8로 교체하여 총 3곳입니다.
(2) 찾음:
invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V
다음으로 수정됨: (재부팅)
const-string v2, "now" invoke-static {v0, v2, v1}, Lcom/android/internal/app/ShutdownThread;->reboot(Landroid/content/Context;Ljava/lang/String;Z)V
다음으로 수정됨: (recovery로 다시 시작)
const-string v2, "recovery" invoke-static {v0, v2, v1}, Lcom/android/internal/app/ShutdownThread;->reboot(Landroid/content/Context;Ljava/lang/String;Z)V
다음으로 수정됨: (bootloader로 다시 시작)
const-string v2, "bootloader" invoke-static {v0, v2, v1}, Lcom/android/internal/app/ShutdownThread;->reboot(Landroid/content/Context;Ljava/lang/String;Z)V
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.