꺼진 메뉴에 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

좋은 웹페이지 즐겨찾기