Chào mừng đến với Hội những người yêu thích Sam Sung Việt Nam.
  • Login:
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 15
  1. #1
    Ngày tham gia
    Jul 2015
    Bài viết
    0

    Mở khóa PIN nhanh cho Android L

    Trên tất cả các thiết bị Samsung chạy Android, khi bạn chọn khóa máy bằng mã PIN thì khi mở máy, bạn cần nhập đúng mã PIN và phải bấm OK. Mình thấy nếu bỏ qua bước bấm OK sẽ tiện hơn nhiều.​Do đó bài viết này mình sẽ hướng dẫn các bạn thực hiện điều đó, và có thêm chức năng thay đổi ngẫu nhiên vị trí các số để tăng tính bảo mật (có thể tùy chọn bật/tắt chức năng này)
    Big thanks <div>
    [IMG]//www.google.com/s2/favicons?domain=http%3A%2F%2Fforum.xda-developers.com[/IMG]
    txr33</div> for this guide !

    Chúng ta sẽ mod trên trên SystemUI,

    1.
    Tải smali theo đường dẫn này : <div>
    [IMG]//www.google.com/s2/favicons?domain=https%3A%2F%2Fdrive.google.com[/IMG]
    DOWNLOAD</div>
    - Giải nén và copy 2 file smali vào đường dẫn : SystemUI.apk\smali\com\android\keyguard

    Tiếp theo, chúng ta cần chỉnh sửa 3 file sau (cũng ở trong thư mục theo đường dẫn trên)
    KeyguardPINView.smali ; PasswordTextView.smali ; NumPadKey.smali

    2.
    Chỉnh sửa file NumPadKey.smali
    - Tìm code sau



    Mã:
    .method public constructor <init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
    Cách tìm kiếm nhanh và chính xác hơn :



    [SPOILER]Theo cách của mình thì đôi khi tìm 1 code nó ra nhiều kết quả, các bạn không biết code nào mới là đúng hoặc để tìm cho nhanh thì làm như sau.
    Ví dụ như khi mình nói tìm code trên, nó bắt đầu bằng .method thì cả đoạn đấy sẽ được kết thúc bằng .end method . Vì thế nêt cắt cả đoạn method này sang text khác để tìm kiếm code khác cho dễ[/SPOILER]
    Ở trong method này, các bạn tìm kiếm tiếp dòng :



    Mã:
    iget-object v5, p0, Lcom/android/keyguard/NumPadKey;->mContext:Landroid/content/Context;
    
    sget v6, Lcom/android/keyguard/R$drawable;->lock_ripple_drawable:I
    
    invoke-virtual {v5, v6}, Landroid/content/Context;->getDrawable(I)Landroid/graphics/drawable/Drawable;
    Thêm code này vào phía trên dòng lệnh trên (như hình)



    Mã:
    invoke-direct {p0}, Lcom/android/keyguard/NumPadKey;->updateText()V

    [SPOILER]

    [IMG]data/attachments/25/25240-b3d38c3dc9876be9a58bd11c3be833d3.jpg[/IMG]

    [/SPOILER]
    -Tìm dòng
    # virtual methods


    Thêm đoạn code sau vào trước dòng # virtual methods



    Mã:
    .method private updateText()V
    .locals 4
    
    .prologue
    .line 122
    iget v2, p0, Lcom/android/keyguard/NumPadKey;->mDigit:I
    
    if-ltz v2, :cond_1
    
    .line 123
    iget-object v2, p0, Lcom/android/keyguard/NumPadKey;->mDigitText:Landroid/widget/TextView;
    
    iget v3, p0, Lcom/android/keyguard/NumPadKey;->mDigit:I
    
    invoke-static {v3}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
    
    move-result-object v3
    
    invoke-virtual {v2, v3}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
    
    .line 124
    sget-object v2, Lcom/android/keyguard/NumPadKey;->sKlondike:[Ljava/lang/String;
    
    if-nez v2, :cond_0
    
    .line 125
    invoke-virtual {p0}, Lcom/android/keyguard/NumPadKey;->getResources()Landroid/content/res/Resources;
    
    move-result-object v2
    
    sget v3, Lcom/android/keyguard/R$array;->lockscreen_num_pad_klondike:I
    
    invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getStringArray(I)[Ljava/lang/String;
    
    move-result-object v2
    
    sput-object v2, Lcom/android/keyguard/NumPadKey;->sKlondike:[Ljava/lang/String;
    
    .line 127
    :cond_0
    sget-object v2, Lcom/android/keyguard/NumPadKey;->sKlondike:[Ljava/lang/String;
    
    if-eqz v2, :cond_1
    
    sget-object v2, Lcom/android/keyguard/NumPadKey;->sKlondike:[Ljava/lang/String;
    
    array-length v2, v2
    
    iget v3, p0, Lcom/android/keyguard/NumPadKey;->mDigit:I
    
    if-le v2, v3, :cond_1
    
    .line 128
    sget-object v2, Lcom/android/keyguard/NumPadKey;->sKlondike:[Ljava/lang/String;
    
    iget v3, p0, Lcom/android/keyguard/NumPadKey;->mDigit:I
    
    aget-object v0, v2, v3
    
    .line 129
    .local v0, "klondike":Ljava/lang/String;
    invoke-virtual {v0}, Ljava/lang/String;->length()I
    
    move-result v1
    
    .line 130
    .local v1, "len":I
    if-lez v1, :cond_2
    
    .line 131
    iget-object v2, p0, Lcom/android/keyguard/NumPadKey;->mKlondikeText:Landroid/widget/TextView;
    
    invoke-virtual {v2, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
    
    .line 137
    .end local v0 # "klondike":Ljava/lang/String;
    .end local v1 # "len":I
    :cond_1
    :goto_0
    return-void
    
    .line 133
    .restart local v0 # "klondike":Ljava/lang/String;
    .restart local v1 # "len":I
    :cond_2
    iget-object v2, p0, Lcom/android/keyguard/NumPadKey;->mKlondikeText:Landroid/widget/TextView;
    
    const/4 v3, 0x4
    
    invoke-virtual {v2, v3}, Landroid/widget/TextView;->setVisibility(I)V
    
    goto :goto_0
    .end method

    [SPOILER]

    [IMG]data/attachments/25/25241-d3a9cdad33e7582d47a462a9852b6fb9.jpg[/IMG]





    [IMG]data/attachments/25/25242-5fc44b41f9ff629dbb810fc795ae2f4c.jpg[/IMG]

    [/SPOILER]
    - Chèn code sau xuống dưới cùng của smali, sau đó lưu lại



    Mã:
    .method public setDigit(I)V
    .locals 0
    .param p1, "digit" # I
    
    .prologue
    .line 117
    iput p1, p0, Lcom/android/keyguard/NumPadKey;->mDigit:I
    
    .line 118
    invoke-direct {p0}, Lcom/android/keyguard/NumPadKey;->updateText()V
    
    .line 119
    return-void
    .end method

    [SPOILER]

    [IMG]data/attachments/25/25243-c80d26036c58871327e7e5dc48f19c4e.jpg[/IMG]

    [/SPOILER]
    3. Chỉnh sửa file PasswordTextView.smali

    - Thêm code sau vào dưới dòng sau, lưu ý dòng này phải thêm dấu , vào cuối
    Lcom/android/keyguard/PasswordTextView$CharState;,




    Mã:
    .annotation system Ldalvik/annotation/MemberClasses;

    [SPOILER]

    [IMG]data/attachments/25/25244-173bd4ff105c152ebb3a9eaa16075d74.jpg[/IMG]

    [/SPOILER]
    Tiếp theo tìm dòng : # instance fields

    Thêm code sau ngay dưới dòng đó



    Mã:
    .field protected mQuickUnlockListener:Lcom/android/keyguard/PasswordTextView$QuickUnlockListener;
    Mình thêm vào vị trí như hình




    [SPOILER]

    [IMG]data/attachments/25/25245-2ba9e8f72cc1cc7901cc7e306bdf7b70.jpg[/IMG]

    [/SPOILER]

  2. #2
    Ngày tham gia
    Jan 2016
    Bài viết
    166
    -Tiếp tục tìm kiếm dòng : .method public append(C)V
    Trong method này tìm đoạn code sau



    Mã:
    :cond_1
    invoke-direct {p0}, Lcom/android/keyguard/PasswordTextView;->userActivity()V
    .line 296
    const-wide/16 v4, 0x0
    
    invoke-direct {p0, v4, v5}, Lcom/android/keyguard/PasswordTextView;->showAndHideHint(J)V
    Thêm code sau phía dưới đoạn code trên



    Mã:
    iget-object v4, p0, Lcom/android/keyguard/PasswordTextView;->mQuickUnlockListener:Lcom/android/keyguard/PasswordTextView$QuickUnlockListener;
    
    if-eqz v4, :cond_next
    
    .line 215
    iget-object v4, p0, Lcom/android/keyguard/PasswordTextView;->mQuickUnlockListener:Lcom/android/keyguard/PasswordTextView$QuickUnlockListener;
    
    iget-object v5, p0, Lcom/android/keyguard/PasswordTextView;->mText:Ljava/lang/String;
    
    invoke-interface {v4, v5}, Lcom/android/keyguard/PasswordTextView$QuickUnlockListener;->onValidateQuickUnlock(Ljava/lang/String;)V
    
    :cond_next
    return-void
    Lưu ý :
    Tùy từng ROM mà đoạn code phải tìm phía trên nó khác nhau, như mình thì sau khi cắt đoạn method kia ra để dễ dàng tìm kiếm trong method đó thì chỉ có khớp code

    -direct {p0}, Lcom/android/keyguard/PasswordTextView;->userActivity()V

    Do đó cần linh hoạt ở bước này




    [SPOILER]

    [IMG]data/attachments/25/25248-774de0530e4d5e4467434d519ecb66a3.jpg[/IMG]

    [/SPOILER]
    Thêm đoạn code sau ở cuối cùng của smali, sau đó lưu lại smali


    Mã:
    .method public setQuickUnlockListener(Lcom/android/keyguard/PasswordTextView$QuickUnlockListener;)V
    .locals 0
    .param p1, "listener" # Lcom/android/keyguard/PasswordTextView$QuickUnlockListener;
    
    .prologue
    .line 101
    iput-object p1, p0, Lcom/android/keyguard/PasswordTextView;->mQuickUnlockListener:Lcom/android/keyguard/PasswordTextView$QuickUnlockListener;
    
    .line 102
    return-void
    .end method

    [SPOILER]

    [IMG]data/attachments/25/25249-2c63c50b18526e0a1b5ed2015a095b4c.jpg[/IMG]

    [/SPOILER]
    3. Sửa file KeyguardPINView.smali

    Thêm đoạn code sau vào phía dưới dòng # static fields



    Mã:
    
    .field private static sNumbers:Ljava/util/List;
    .annotation system Ldalvik/annotation/Signature;
    value = {
    "Ljava/util/List",
    "<",
    "Ljava/lang/Integer;",
    ">;"
    }
    .end annotation
    



    [SPOILER]

    [IMG]data/attachments/25/25250-6ca358d5c72e1299d786df2b26e51b02.jpg[/IMG]

    [/SPOILER]


    Tiếp theo thêm code sau ở dưới dòng (Nếu đã có thì không cần thêm) # instance fields
    .field private mDivider:Landroid/view/View;



    [SPOILER]

    [IMG]data/attachments/25/25251-03e9852b88e0782008cb9e307879d0e3.jpg[/IMG]

    [/SPOILER]


    Tìm dòng # direct methods

    Thêm đoạn code sau ngay dưới dòng đó



    Mã:
    .method static constructor <clinit>()V
    .locals 7
    
    .prologue
    const/4 v6, 0x4
    
    const/4 v5, 0x3
    
    const/4 v4, 0x2
    
    const/4 v2, 0x1
    
    const/4 v3, 0x0
    
    .line 48
    const/16 v0, 0xa
    
    new-array v0, v0, [Ljava/lang/Integer;
    
    invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    
    move-result-object v1
    
    aput-object v1, v0, v3
    
    invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    
    move-result-object v1
    
    aput-object v1, v0, v2
    
    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    
    move-result-object v1
    
    aput-object v1, v0, v4
    
    invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    
    move-result-object v1
    
    aput-object v1, v0, v5
    
    const/4 v1, 0x5
    
    invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    
    move-result-object v1
    
    aput-object v1, v0, v6
    
    const/4 v1, 0x5
    
    const/4 v2, 0x6
    
    invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    
    move-result-object v2
    
    aput-object v2, v0, v1
    
    const/4 v1, 0x6
    
    const/4 v2, 0x7
    
    invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    
    move-result-object v2
    
    aput-object v2, v0, v1
    
    const/4 v1, 0x7
    
    const/16 v2, 0x8
    
    invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    
    move-result-object v2
    
    aput-object v2, v0, v1
    
    const/16 v1, 0x8
    
    const/16 v2, 0x9
    
    invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    
    move-result-object v2
    
    aput-object v2, v0, v1
    
    const/16 v1, 0x9
    
    invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
    
    move-result-object v2
    
    aput-object v2, v0, v1
    
    invoke-static {v0}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
    
    move-result-object v0
    
    sput-object v0, Lcom/android/keyguard/KeyguardPINView;->sNumbers:Ljava/util/List;
    
    return-void
    .end method
    Tìm dòng .method static synthetic access$000(Lcom/android/keyguard/KeyguardPINView;Z)V

    Thêm 2 đoạn code sau ngay dưới dòng đó



    Mã:
    .method static synthetic access$100(Lcom/android/keyguard/KeyguardPINView;Ljava/lang/String;)V
    .locals 0
    .param p0, "x0" # Lcom/android/keyguard/KeyguardPINView;
    .param p1, "x1" # Ljava/lang/String;
    
    .prologue
    .line 37
    invoke-direct {p0, p1}, Lcom/android/keyguard/KeyguardPINView;->validateQuickUnlock(Ljava/lang/String;)V
    
    return-void
    .end method
    Mã:
    .method private validateQuickUnlock(Ljava/lang/String;)V
    .locals 3
    .param p1, "password" # Ljava/lang/String;
    
    .prologue
    const/4 v2, 0x1
    
    .line 198
    if-eqz p1, :cond_0
    
    .line 199
    invoke-virtual {p1}, Ljava/lang/String;->length()I
    
    move-result v0
    
    const/4 v1, 0x3
    
    if-le v0, v1, :cond_0
    
    iget-object v0, p0, Lcom/android/keyguard/KeyguardPINView;->mLockPatternUtils:Lcom/android/internal/widget/LockPatternUtils;
    
    invoke-virtual {v0, p1}, Lcom/android/internal/widget/LockPatternUtils;->checkPassword(Ljava/lang/String;)Z
    
    move-result v0
    
    if-eqz v0, :cond_0
    
    .line 201
    iget-object v0, p0, Lcom/android/keyguard/KeyguardPINView;->mCallback:Lcom/android/keyguard/KeyguardSecurityCallback;
    
    invoke-interface {v0, v2}, Lcom/android/keyguard/KeyguardSecurityCallback;->reportUnlockAttempt(Z)V
    
    .line 202
    iget-object v0, p0, Lcom/android/keyguard/KeyguardPINView;->mCallback:Lcom/android/keyguard/KeyguardSecurityCallback;
    
    invoke-interface {v0, v2}, Lcom/android/keyguard/KeyguardSecurityCallback;->dismiss(Z)V
    
    .line 203
    invoke-virtual {p0, v2}, Lcom/android/keyguard/KeyguardPINView;->resetPasswordText(Z)V
    
    .line 206
    :cond_0
    return-void
    .end method
    Tiếp theo tìm dòng sau .method protected onFinishInflate()V

    Xóa toàn bộ từ dòng trên đến dòng


    Mã:
    const/4 v9, 0x0
    
        invoke-virtual {v8, v9}, Lcom/android/keyguard/PasswordTextView;->setQuickUnlockListener(Lcom/android/keyguard/PasswordTextView$QuickUnlockListener;)V
    
        goto :goto_5
    .end method
    Và thêm đoạn code này vào vị trí vừa xóa



    Mã:
    .method protected onFinishInflate()V
    .locals 12
    
    .prologue
    const/4 v9, 0x1
    
    const/4 v10, 0x0
    
    .line 77
    invoke-super {p0}, Lcom/android/keyguard/KeyguardPinBasedInputView;->onFinishInflate()V
    
    .line 78
    sget v8, Lcom/android/keyguard/R$id;->keyguard_bouncer_frame:I
    
    invoke-virtual {p0, v8}, Lcom/android/keyguard/KeyguardPINView;->findViewById(I)Landroid/view/View;
    
    move-result-object v8
    
    check-cast v8, Landroid/view/ViewGroup;
    
    iput-object v8, p0, Lcom/android/keyguard/KeyguardPINView;->mKeyguardBouncerFrame:Landroid/view/ViewGroup;
    
    .line 79
    sget v8, Lcom/android/keyguard/R$id;->row0:I
    
    invoke-virtual {p0, v8}, Lcom/android/keyguard/KeyguardPINView;->findViewById(I)Landroid/view/View;
    
    move-result-object v8
    
    check-cast v8, Landroid/view/ViewGroup;
    
    iput-object v8, p0, Lcom/android/keyguard/KeyguardPINView;->mRow0:Landroid/view/ViewGroup;
    
    .line 80
    sget v8, Lcom/android/keyguard/R$id;->row1:I
    
    invoke-virtual {p0, v8}, Lcom/android/keyguard/KeyguardPINView;->findViewById(I)Landroid/view/View;
    
    move-result-object v8
    
    check-cast v8, Landroid/view/ViewGroup;
    
    iput-object v8, p0, Lcom/android/keyguard/KeyguardPINView;->mRow1:Landroid/view/ViewGroup;
    
    .line 81
    sget v8, Lcom/android/keyguard/R$id;->row2:I
    
    invoke-virtual {p0, v8}, Lcom/android/keyguard/KeyguardPINView;->findViewById(I)Landroid/view/View;
    
    move-result-object v8
    
    check-cast v8, Landroid/view/ViewGroup;
    
    iput-object v8, p0, Lcom/android/keyguard/KeyguardPINView;->mRow2:Landroid/view/ViewGroup;
    
    .line 82
    sget v8, Lcom/android/keyguard/R$id;->row3:I
    
    invoke-virtual {p0, v8}, Lcom/android/keyguard/KeyguardPINView;->findViewById(I)Landroid/view/View;
    
    move-result-object v8
    
    check-cast v8, Landroid/view/ViewGroup;
    
    iput-object v8, p0, Lcom/android/keyguard/KeyguardPINView;->mRow3:Landroid/view/ViewGroup;
    
    .line 83
    sget v8, Lcom/android/keyguard/R$id;->divider:I
    
    invoke-virtual {p0, v8}, Lcom/android/keyguard/KeyguardPINView;->findViewById(I)Landroid/view/View;
    
    move-result-object v8
    
    iput-object v8, p0, Lcom/android/keyguard/KeyguardPINView;->mDivider:Landroid/view/View;
    
    .line 85
    invoke-virtual {p0}, Lcom/android/keyguard/KeyguardPINView;->getContext()Landroid/content/Context;
    
    move-result-object v8
    
    invoke-virtual {v8}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
    
    move-result-object v8
    
    const-string v11, "lockscreen_quick_unlock_control"
    
    invoke-static {v8, v11, v10}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
    
    move-result v8
    
    if-ne v8, v9, :cond_1
    
    move v4, v9
    
    .line 88
    .local v4, "quickUnlock":Z
    :goto_0
    invoke-virtual {p0}, Lcom/android/keyguard/KeyguardPINView;->getContext()Landroid/content/Context;
    
    move-result-object v8
    
    invoke-virtual {v8}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
    
    move-result-object v8
    
    const-string v11, "lockscreen_scramble_pin_layout"
    
    invoke-static {v8, v11, v10}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
    
    move-result v8
    
    if-ne v8, v9, :cond_2
    
    move v5, v9
    
    .line 91
    
    .local v5, "scramblePin":Z
    :goto_1
    if-eqz v5, :cond_5
    
    .line 92
    sget-object v8, Lcom/android/keyguard/KeyguardPINView;->sNumbers:Ljava/util/List;
    
    invoke-static {v8}, Ljava/util/Collections;->shuffle(Ljava/util/List;)V
    
    .line 94
    sget v8, Lcom/android/keyguard/R$id;->keyguard_bouncer_frame:I
    
    invoke-virtual {p0, v8}, Lcom/android/keyguard/KeyguardPINView;->findViewById(I)Landroid/view/View;
    
    move-result-object v0
    
    check-cast v0, Landroid/widget/LinearLayout;
    
    
    .line 95
    .local v0, "bouncer":Landroid/widget/LinearLayout;
    new-instance v7, Ljava/util/ArrayList;
    
    
    invoke-direct {v7}, Ljava/util/ArrayList;-><init>()V
    
    .line 96
    .local v7, "views":Ljava/util/List;, "Ljava/util/List<Lcom/android/keyguard/NumPadKey;>;"
    const/4 v1, 0x0
    
    .local v1, "i":I
    :goto_2
    invoke-virtual {v0}, Landroid/widget/LinearLayout;->getChildCount()I
    
    move-result v8
    
    if-ge v1, v8, :cond_4
    
    .line 97
    invoke-virtual {v0, v1}, Landroid/widget/LinearLayout;->getChildAt(I)Landroid/view/View;
    
    move-result-object v8
    
    instance-of v8, v8, Landroid/widget/LinearLayout;
    
    if-eqz v8, :cond_3
    
    .line 98
    invoke-virtual {v0, v1}, Landroid/widget/LinearLayout;->getChildAt(I)Landroid/view/View;
    
    move-result-object v3
    
    check-cast v3, Landroid/widget/LinearLayout;
    
    .line 99
    .local v3, "nestedLayout":Landroid/widget/LinearLayout;
    const/4 v2, 0x0
    
    .local v2, "j":I
    :goto_3
    invoke-virtual {v3}, Landroid/widget/LinearLayout;->getChildCount()I
    
    move-result v8
    
    if-ge v2, v8, :cond_3
    
    .line 100
    invoke-virtual {v3, v2}, Landroid/widget/LinearLayout;->getChildAt(I)Landroid/view/View;
    
    move-result-object v6
    
    .line 101
    .local v6, "view":Landroid/view/View;
    invoke-virtual {v6}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
    
    move-result-object v8
    
    const-class v9, Lcom/android/keyguard/NumPadKey;
    
    if-ne v8, v9, :cond_0
    
    .line 102
    check-cast v6, Lcom/android/keyguard/NumPadKey;
    
    .end local v6 # "view":Landroid/view/View;
    invoke-interface {v7, v6}, Ljava/util/List;->add(Ljava/lang/Object;)Z
    
    .line 99
    :cond_0
    add-int/lit8 v2, v2, 0x1
    
    goto :goto_3
    
    .end local v0 # "bouncer":Landroid/widget/LinearLayout;
    .end local v1 # "i":I
    .end local v2 # "j":I
    .end local v3 # "nestedLayout":Landroid/widget/LinearLayout;
    .end local v4 # "quickUnlock":Z
    .end local v5 # "scramblePin":Z
    .end local v7 # "views":Ljava/util/List;, "Ljava/util/List<Lcom/android/keyguard/NumPadKey;>;"
    :cond_1
    move v4, v10
    
    .line 85
    goto :goto_0
    
    .restart local v4 # "quickUnlock":Z
    :cond_2
    move v5, v10
    
    .line 88
    goto :goto_1
    
    .line 96
    .restart local v0 # "bouncer":Landroid/widget/LinearLayout;
    .restart local v1 # "i":I
    .restart local v5 # "scramblePin":Z
    .restart local v7 # "views":Ljava/util/List;, "Ljava/util/List<Lcom/android/keyguard/NumPadKey;>;"
    :cond_3
    add-int/lit8 v1, v1, 0x1
    
    goto :goto_2
    
    .line 109
    :cond_4
    const/4 v1, 0x0
    
    :goto_4
    sget-object v8, Lcom/android/keyguard/KeyguardPINView;->sNumbers:Ljava/util/List;
    
    invoke-interface {v8}, Ljava/util/List;->size()I
    
    move-result v8
    
    if-ge v1, v8, :cond_5
    
    .line 110
    invoke-interface {v7, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
    
    move-result-object v6
    
    check-cast v6, Lcom/android/keyguard/NumPadKey;
    
    .line 111
    .local v6, "view":Lcom/android/keyguard/NumPadKey;
    sget-object v8, Lcom/android/keyguard/KeyguardPINView;->sNumbers:Ljava/util/List;
    
    invoke-interface {v8, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
    
    move-result-object v8
    
    check-cast v8, Ljava/lang/Integer;
    
    invoke-virtual {v8}, Ljava/lang/Integer;->intValue()I
    
    move-result v8
    
    invoke-virtual {v6, v8}, Lcom/android/keyguard/NumPadKey;->setDigit(I)V
    
    .line 109
    add-int/lit8 v1, v1, 0x1
    
    goto :goto_4
    
    .line 115
    .end local v0 # "bouncer":Landroid/widget/LinearLayout;
    .end local v1 # "i":I
    .end local v6 # "view":Lcom/android/keyguard/NumPadKey;
    .end local v7 # "views":Ljava/util/List;, "Ljava/util/List<Lcom/android/keyguard/NumPadKey;>;"
    :cond_5
    if-eqz v4, :cond_6
    
    .line 116
    iget-object v8, p0, Lcom/android/keyguard/KeyguardPINView;->mPasswordEntry:Lcom/android/keyguard/PasswordTextView;
    
    new-instance v9, Lcom/android/keyguard/KeyguardPINView$2;
    
    invoke-direct {v9, p0}, Lcom/android/keyguard/KeyguardPINView$2;-><init>(Lcom/android/keyguard/KeyguardPINView;)V
    
    invoke-virtual {v8, v9}, Lcom/android/keyguard/PasswordTextView;->setQuickUnlockListener(Lcom/android/keyguard/PasswordTextView$QuickUnlockListener;)V
    
    .line 124
    :goto_5
    return-void
    
    .line 122
    :cond_6
    iget-object v8, p0, Lcom/android/keyguard/KeyguardPINView;->mPasswordEntry:Lcom/android/keyguard/PasswordTextView;
    
    const/4 v9, 0x0
    
    invoke-virtual {v8, v9}, Lcom/android/keyguard/PasswordTextView;->setQuickUnlockListener(Lcom/android/keyguard/PasswordTextView$QuickUnlockListener;)V
    
    goto :goto_5
    .end method
    Vậy là đã edit xong, giờ recomplie lại UI.
    Sau đó tải file này về cài đặt như apk thông thường để có thể bật tắt tùy chọn
    <div class="link-essentials-favicon">
    [IMG]//www.google.com/s2/favicons?domain=https%3A%2F%2Fdrive.google.com[/IMG]
    Unlock Setting</div>

  3. #3
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    aaaaaa

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Big thank bác @vitcum, guide rất hữu ích

    Send from ✨AnakaraKool✨Galaxy✨SM-G925

  5. #5
    Ngày tham gia
    Jul 2015
    Bài viết
    0
    Đánh dấu phát. Quá công phu.

  6. #6
    Ngày tham gia
    Jul 2015
    Bài viết
    0
    Làm đến bước cuối không tìm thấy đoạn này:



    Mã:
    const/4 v9, 0x0
    
    invoke-virtual {v8, v9}, Lcom/android/keyguard/PasswordTextView;->setQuickUnlockListener(Lcom/android/keyguard/PasswordTextView$QuickUnlockListener;)V
    
    goto :goto_5
    .end method
    Đành bó tay

  7. #7
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Trích dẫn Gửi bởi nodete.epu
    Làm đến bước cuối không tìm thấy đoạn này:



    Mã:
    const/4 v9, 0x0
    
    invoke-virtual {v8, v9}, Lcom/android/keyguard/PasswordTextView;->setQuickUnlockListener(Lcom/android/keyguard/PasswordTextView$QuickUnlockListener;)V
    
    goto :goto_5
    .end method
    Đành bó tay
    Ah cái smali này nó ở mỗi rom nó có thể khác nhau. Cơ bản bạn sẽ phải xóa hết cả method đó, bắt đầu từ .method cho đến .end method đầu tiên bên dưới

  8. #8
    Ngày tham gia
    Jan 2016
    Bài viết
    0
    Trích dẫn Gửi bởi vit cum
    aaaaaa
    Em đã làm.....
    .......làm tới giờ này chắc phải trên/dưới khoảng 10 lần. Nhưng hok chạy gì hết tiêi. Chôm smail của máy khác sang........ thì fc toàn tập. Mẹo cái anh LP nhiều khi mệt thiệt. Mỗi rom nó chơi 1 kiểu.

    Gửi từ SM-N9005 của tôi

  9. #9
    Ngày tham gia
    Jul 2015
    Bài viết
    0
    Trích dẫn Gửi bởi vit cum
    Ah cái smali này nó ở mỗi rom nó có thể khác nhau. Cơ bản bạn sẽ phải xóa hết cả method đó, bắt đầu từ .method cho đến .end method đầu tiên bên dưới
    Đúng oy. Cơ bản là xóa trong cái .menthod đến .en method....và thay hoàn toafn bằng cái code mới ở trên í.

    Gửi từ SM-N9005 của tôi

  10. #10
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    làm lại phát nữa thì lỗi dư này:



    ..\3-Out\SystemUI.apk\smali\com\android\keyguard\Keygua rdPINView.smali[192,1] missing END_METHOD_DIRECTIVE at '.method'
    ..\3-Out\SystemUI.apk\smali\com\android\keyguard\Keygua rdPINView.smali[248,4] missing EOF at '.locals'
    Exception in thread "main" brut.androlib.AndrolibException: Could not smali file: com/android/keyguard/KeyguardPINView.smali
    at brut.androlib.src.SmaliBuilder.buildFile(SmaliBuil der.java:71)
    at brut.androlib.src.SmaliBuilder.build(SmaliBuilder. java:55)
    at brut.androlib.src.SmaliBuilder.build(SmaliBuilder. java:41)
    at brut.androlib.Androlib.buildSourcesSmali(Androlib. java:349)
    at brut.androlib.Androlib.buildSources(Androlib.java: 289)
    at brut.androlib.Androlib.build(Androlib.java:275)
    at brut.androlib.Androlib.build(Androlib.java:250)
    at brut.apktool.Main.cmdBuild(Main.java:225)
    at brut.apktool.Main.main(Main.java:84)

    ------------------------------------------------------

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •