Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ICSの場合、電源メニューに再起動追加したい場合、以下のものが必要。
- これをしないと、設定が再起動しないと反映されない。
- (なぜかというと、ICSは電源メニューのダイアログを使い回しているらしく、設定変更の際、一旦ダイアログを殺さないといけないのです。JBは毎回ダイアログ生成し直してるから、この処置は不要。)
- 【1】
- CubeModSettings.apk
- smali/com/android/cubemodsettings/MainActivity.java
- メソッド「writeAddRebootToPowerMenuOption」内
- putIntDBをしている部分のあとに、
- ----------
- new-instance v0, Landroid/content/Intent;
- const-string v1, "android.intent.action.ADD_REBOOT_TO_POWER_MENU"
- invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
- invoke-virtual {p0, v0}, Lcom/android/cubemodsettings/MainActivity;->sendBroadcast(Landroid/content/Intent;)V
- ----------
- ↑このコード追加。
- 【2】
- android.policyのcom/android/internal/policy/impl/GlobalActions$5.smali
- (「$5」は機種によって違うかも。2行目が「.super Landroid/content/BroadcastReceiver;」になってるやつ)
- 以下の部分にコード追加
- ----------
- # virtual methods
- .method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V
- .registers 7
- .parameter "context"
- .parameter "intent"
- .prologue
- const/4 v3, 0x0
- .line 621
- invoke-virtual {p2}, Landroid/content/Intent;->getAction()Ljava/lang/String;
- move-result-object v0
- .line 622
- .local v0, action:Ljava/lang/String;
- ### ここから追加!
- const-string v2, "android.intent.action.ADD_REBOOT_TO_POWER_MENU"
- invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
- move-result v2
- if-eqz v2, :cond_1
- iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions$5;->this$0:Lcom/android/internal/policy/impl/GlobalActions;
- invoke-static {v2}, Lcom/android/internal/policy/impl/GlobalActions;->access$1200(Lcom/android/internal/policy/impl/GlobalActions;)V
- goto :cond_2c
- :cond_1
- ### ここまで追加!
- const-string v2, "android.intent.action.CLOSE_SYSTEM_DIALOGS"
- invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
- move-result v2
- ----------
- 追加部分のv0とかv2のレジスタ名は、前後を見て合わせること。
- 「goto :cond_2c」の「cond_2c」は、このメソッド内の「return-void」の直前のラベル名に合わせるべし。
- 【3】
- android.policyのcom/android/internal/policy/impl/GlobalActions.smali
- コンストラクタ
- .method public constructor <init>(Landroid/content/Context;)V
- の中に、
- ----------
- const-string v2, "android.intent.action.SCREEN_OFF"
- invoke-virtual {v0, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
- ----------
- ↑みたいなんが並んでいる部分があるが、その後に同じような感じで以下を追加。
- ----------
- const-string v2, "android.intent.action.ADD_REBOOT_TO_POWER_MENU"
- invoke-virtual {v0, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
- ----------
- 【4】
- 同じくandroid.policyのcom/android/internal/policy/impl/GlobalActions.smali
- 以下、2つほどメソッド追加。
- ----------
- .method static synthetic access$1200(Lcom/android/internal/policy/impl/GlobalActions;)V
- .registers 1
- .parameter "x0"
- .prologue
- invoke-direct {p0}, Lcom/android/internal/policy/impl/GlobalActions;->addRebootOptions()V
- return-void
- .end method
- .method private addRebootOptions()V
- .registers 2
- .prologue
- iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mDialog:Landroid/app/AlertDialog;
- if-eqz v0, :cond_1
- invoke-virtual {v0}, Landroid/app/AlertDialog;->dismiss()V
- const/4 v0, 0x0
- iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mDialog:Landroid/app/AlertDialog;
- :cond_1
- return-void
- .end method
- ----------
- 【5】
- めでたしめでたし!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement