Advertisement
cubecube

ADD_REBOOT_TO_POWER_MENU issue

Jun 21st, 2013
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.13 KB | None | 0 0
  1. ICSの場合、電源メニューに再起動追加したい場合、以下のものが必要。
  2. これをしないと、設定が再起動しないと反映されない。
  3. (なぜかというと、ICSは電源メニューのダイアログを使い回しているらしく、設定変更の際、一旦ダイアログを殺さないといけないのです。JBは毎回ダイアログ生成し直してるから、この処置は不要。)
  4.  
  5. 【1】
  6. CubeModSettings.apk
  7. smali/com/android/cubemodsettings/MainActivity.java
  8. メソッド「writeAddRebootToPowerMenuOption」内
  9. putIntDBをしている部分のあとに、
  10.  
  11. ----------
  12. new-instance v0, Landroid/content/Intent;
  13.  
  14. const-string v1, "android.intent.action.ADD_REBOOT_TO_POWER_MENU"
  15.  
  16. invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
  17.  
  18. invoke-virtual {p0, v0}, Lcom/android/cubemodsettings/MainActivity;->sendBroadcast(Landroid/content/Intent;)V
  19. ----------
  20.  
  21. ↑このコード追加。
  22.  
  23. 【2】
  24. android.policyのcom/android/internal/policy/impl/GlobalActions$5.smali
  25. (「$5」は機種によって違うかも。2行目が「.super Landroid/content/BroadcastReceiver;」になってるやつ)
  26. 以下の部分にコード追加
  27.  
  28. ----------
  29. # virtual methods
  30. .method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V
  31. .registers 7
  32. .parameter "context"
  33. .parameter "intent"
  34.  
  35. .prologue
  36. const/4 v3, 0x0
  37.  
  38. .line 621
  39. invoke-virtual {p2}, Landroid/content/Intent;->getAction()Ljava/lang/String;
  40.  
  41. move-result-object v0
  42.  
  43. .line 622
  44. .local v0, action:Ljava/lang/String;
  45. ### ここから追加!
  46. const-string v2, "android.intent.action.ADD_REBOOT_TO_POWER_MENU"
  47.  
  48. invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  49.  
  50. move-result v2
  51.  
  52. if-eqz v2, :cond_1
  53.  
  54. iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions$5;->this$0:Lcom/android/internal/policy/impl/GlobalActions;
  55.  
  56. invoke-static {v2}, Lcom/android/internal/policy/impl/GlobalActions;->access$1200(Lcom/android/internal/policy/impl/GlobalActions;)V
  57.  
  58. goto :cond_2c
  59.  
  60. :cond_1
  61. ### ここまで追加!
  62. const-string v2, "android.intent.action.CLOSE_SYSTEM_DIALOGS"
  63.  
  64. invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
  65.  
  66. move-result v2
  67. ----------
  68.  
  69. 追加部分のv0とかv2のレジスタ名は、前後を見て合わせること。
  70. 「goto :cond_2c」の「cond_2c」は、このメソッド内の「return-void」の直前のラベル名に合わせるべし。
  71.  
  72. 【3】
  73. android.policyのcom/android/internal/policy/impl/GlobalActions.smali
  74. コンストラクタ
  75. .method public constructor <init>(Landroid/content/Context;)V
  76. の中に、
  77.  
  78. ----------
  79. const-string v2, "android.intent.action.SCREEN_OFF"
  80.  
  81. invoke-virtual {v0, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
  82. ----------
  83.  
  84. ↑みたいなんが並んでいる部分があるが、その後に同じような感じで以下を追加。
  85.  
  86. ----------
  87. const-string v2, "android.intent.action.ADD_REBOOT_TO_POWER_MENU"
  88.  
  89. invoke-virtual {v0, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
  90. ----------
  91.  
  92. 【4】
  93. 同じくandroid.policyのcom/android/internal/policy/impl/GlobalActions.smali
  94. 以下、2つほどメソッド追加。
  95.  
  96. ----------
  97. .method static synthetic access$1200(Lcom/android/internal/policy/impl/GlobalActions;)V
  98. .registers 1
  99. .parameter "x0"
  100.  
  101. .prologue
  102. invoke-direct {p0}, Lcom/android/internal/policy/impl/GlobalActions;->addRebootOptions()V
  103.  
  104. return-void
  105. .end method
  106.  
  107. .method private addRebootOptions()V
  108. .registers 2
  109.  
  110. .prologue
  111. iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mDialog:Landroid/app/AlertDialog;
  112.  
  113. if-eqz v0, :cond_1
  114.  
  115. invoke-virtual {v0}, Landroid/app/AlertDialog;->dismiss()V
  116.  
  117. const/4 v0, 0x0
  118.  
  119. iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mDialog:Landroid/app/AlertDialog;
  120.  
  121. :cond_1
  122. return-void
  123. .end method
  124. ----------
  125.  
  126. 【5】
  127. めでたしめでたし!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement