回覆列表
  • 1 # 方言影視

    讓SuperChm實現Call3具有一樣的註冊機制。首先得了解,一個Android程式由一個或多個Activity以及其他元件組成,每個Activity都是Android程式的一個展示“頁面”,負責資料的處理和展示工作。並且每個Android程式有且僅有一個主Activity(隱藏程式沒有主Activity)它是程式啟動的第一個Activity。知道了這些,我們就看看Call3的第一個“頁面”即是展示註冊機制的Activity包含了哪些元素。

    然後開啟Call3的VerifyActivity.smali,其instance fields已經顯示出所引用的元件:

    .field private a:Landroid/widget/Button;

    .field private b:Landroid/widget/Button;

    //一個瀏覽文字

    .field private c:Landroid/widget/TextView;

    //一個編輯框

    .field private d:Landroid/widget/EditText;

    //驗證註冊的本地SharedPreferences

    .field private e:Landroid/content/SharedPreferences;

    //獲取手機通訊狀態相關的方法,這個會涉及到系統許可權

    .field private f:Landroid/telephony/TelephonyManager;

    //提示框

    .field private g:Landroid/app/ProgressDialog;

    VerifyActivity中各種的方法:1、在a()方法中有引用DESUtil.smali的encryptDES解密方法。

    invoke-static {v0}, Lcom/call3/DESUtil;->encryptDES(Ljava/lang/String;)Ljava/lang/String;

    注意:這裡面也有啟動主Activity

    2、在onclick()方法中有一個資源ID:0x7f070014

    :pswitch_data_0

    .packed-switch 0x7f070014

    :pswitch_0

    :pswitch_1

    .end packed-switch

    3、在onCreate()方法中資源ID有:0x7f030001、0x7f070012、0x7f070014、0x7f070015、0x7f070013。還有一個啟動主功能MainActivity

    new-instance v0, Landroid/content/Intent;

    const-class v1, Lcom/call3/MainActivity;

    invoke-direct {v0, p0, v1}, Landroid/content/Intent;->

    (Landroid/content/Context;Ljava/lang/Class;)V

    invoke-virtual {p0, v0}, Lcom/call3/VerifyActivity;->startActivity(Landroid/content/Intent;)V

    對於DESUtil.smali,它又引用了Base64.smali檔案中的encode方法:

    invoke-static {v0}, Lcom/call3/Base64;->encode([B)Ljava/lang/String;

    這樣,答題的流程我們就知道了:首先在AndroidMainfest.xml中配置主Activity為VerifyActivity,然後匯入layout佈局檔案activity_main.xml,同時還要引用DESUtil.smali和Base64.smali。同時要注意TelephonyManager有關許可權的增加。

    好了,我們開始操作:

    1、將SuperChm程式的主Activity修改為VerifyActivity,原主Activity變為一般2、在原主Activity的資料夾下匯入:VerifyActivity.smali、DESUtil.smali和Base64.smali。在layout佈局資料夾下,匯入activity_verify.xml。

    3、將VerifyActivity.smali、DESUtil.smali、Base64.smali檔案中的“Lcom/call3/”全部替換成“Lcom/jrzheng/superchm/Activity/”。更改VerifyActivity.smali中啟動的主Activity,即:

    const-class v1, Lcom/call3/MainActivity;

    改為:

    const-class v1, Lcom/jrzheng/superchm/Activity/MainActivity;

    4、開始最艱辛的一個過程,設定資源ID。自行對比吧。

    新增color:colors.xml、public.xml、R$color.smali;

    新增“btn_verify”:ids.xml、public.xml&id、R$id;

    新增“activity_verify”:public.xml&layout、R$layout;

    新增“tv_imei”:ids.xml、public.xml&id、R$id;

    新增“btn_close”:ids.xml、public.xml&id、R$id;

    新增“et_pwd”:ids.xml、public.xml&id、R$id;

    新增“tv_title”,ids.xml、public.xml&id、R$id;

    0x7f070014->btn_verify的ID

    0x7f030001->activity_verify的ID

    0x7f070012->tv_imei的ID

    0x7f070015->btn_close的ID

    0x7f06007f->et_pwd的ID

    這個Call3的註冊機制還有一個好處就是註冊成功以後,再開啟就不再顯示註冊介面。

  • 中秋節和大豐收的關聯?
  • 剛出來實習幾個月,想配一臺電腦,預算大概在2000到3000,有哪些可以推薦的呢?