Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android手機 >> Android刷機教程 >> 三星刷機 >> 三星N7100在電源菜單中加入重啟、recovery等選項的教程

三星N7100在電源菜單中加入重啟、recovery等選項的教程

編輯:三星刷機

第一步
添加字符串

首先反編譯framework-res.apk
打開values\strings.xml,然後在裡面加上

  • <string name="reboot_recovery">Recovery</string>
  • <string name="reboot_download">Download</string>
  • <string name="reboot">Reboot</string>
     

保存,關閉

第二步
打開values\public.xml,分配剛剛加上去的字符串id
具體做法是,翻到文件最後,查看最後一個字符串的id,假設為10403c2,搜索10403c3,看看是否已經有此id了,沒有的話,添加代碼

  • <public type="string" name="reboot_recovery" id="0x010403c3" />
  • <public type="string" name="reboot_download" id="0x010403c4" />
  • <public type="string" name="reboot" id="0x010403c5" />
     

如果有,可以繼續搜10403c4······

第三步
現在可以在圖片資源文件夾(res\drawable-hdpi,res\drawable-mdpi,res\drawable-ldpi)加上自己喜歡的圖標了
為了方便,以下規定圖標名字為reboot.png recovery.png download.png
實際上,大家可以自己命名圖標名字

然後

為剛剛加上的圖標和剛剛分配的id連接起來

打開values\public.xml,繼續添加代碼

  • <public type="drawable" name="reboot" id="0x010803aa" />
  • <public type="drawable" name="recovery" id="0x010803ab" />
  • <public type="drawable" name="download" id="0x010803ac" />
     

保存,關閉

現在framework-res.apk文件弄好了,剩下的編譯就不用多說了

接下來弄另外一個文件framework.jar
目的是使關機選項有作用,能重啟

反編譯framework.jar(方法自己百度)

打開com\android\internal\app\ShutdownThread.smali 

在第37行添加代碼

  • .field public static mReboot:I
     

然後,轉到第1463行,注意,此行前一個代碼應該是"invoke-static {}, Landroid/os/Power;->shutdown()V"

在此行添加代碼

  • sget v1, Lcom/android/internal/app/ShutdownThread;->mReboot:I

  •  
  • const/4 v2, 0x1

  •  
  • if-eq v1, v2, :reboot

  •  
  • const/4 v2, 0x2

  •  
  • if-eq v1, v2, :rebootRecovery

  •  
  • const/4 v2, 0x3

  •  
  • if-eq v1, v2, :rebootDownload
     

然後在1477行

  • .line 531
  • invoke-static {}, Landroid/os/Power;->shutdown()V

  •  
  • .line 532
  • return-void
     


繼續添加代碼

  • :reboot

  •  
  • const-string v4, "now"

  •  
  • invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V

  •  
  • return-void

  •  
  • :rebootRecovery

  •  
  • const-string v4, "recovery"

  •  
  • invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V

  •  
  • return-void

  •  
  • :rebootDownload

  •  
  • const-string v4, "download"

  •  
  • invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V

  •  
  • return-void
     



保存,關閉

之後將framework.jar編譯回來(方法百度)

接下來我們要在電源菜單中添加選項

反編譯android.policy.jar

打開com\android\internal\policy\impl\GlobalActions.smali

第一件事就是將數組長度增加3

方法是將第431行的代碼

  • const/4 v0, 0x3

  •  
  • new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
     



改為

  • const/4 v0, 0x6

  •  
  • new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
     



然後,在第457行,也就是在 aput-object v2, v0, v1 之後

添加代碼

  •     const/4 v1, 0x3

  •  
  •     new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$7;

  •  
  •     const v3, 0x10803aa # reboot icon resource id

  •  
  •     const v4, 0x10403c5 # reboot string resource id

  •  
  •     invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$7;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

  •  
  •     aput-object v2, v0, v1

  •  
  •     const/4 v1, 0x4

  •  
  •     new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$8;

  •  
  •     const v3, 0x10803ab # recovery icon resource id

  •  
  •     const v4, 0x10403c3 # recovery string resource id

  •  
  •     invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$8;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

  •  
  •     aput-object v2, v0, v1

  •  
  •     const/4 v1, 0x5

  •  
  •     new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$9;

  •  
  •     const v3, 0x10803ac # download icon resource id

  •  
  •     const v4, 0x10403c4 # download string resource id

  •  
  •     invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$9;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

  •  
  •     aput-object v2, v0, v1
     



確保id與剛剛在framework-res.apk中添加的id名稱一致

保存,關閉

接下來確保你添加的重啟選項可用

復制GlobalActions$3.smali 並且重命名為GlobalActions$7.smali 
打開GlobalActions$7.smali 替換所有GlobalActions$3.smali 的實例

然後轉到52行,52行前面的代碼應該是
"invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V"

添加代碼

  • const/4 v2, 0x1

  •  
  • sput v2, Lcom/android/internal/app/ShutdownThread;->mReboot:I
     



保存,關閉

接下來
復制GlobalActions$3.smali 並命名為GlobalActions$9.smali 
打開GlobalActions$9.smali 替換所有GlobalActions$3.smali 實例
同樣轉到第52行,52行前面應該是"invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V

添加代碼

  • const/4 v2, 0x3

  •  
  • sput v2, Lcom/android/internal/app/ShutdownThread;->mReboot:I
     

保存,關閉

將android.policy.jar編譯回來

ok,試試效果吧

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved