android安全問題(二) 程式鎖

來源:互聯網
上載者:User

某些人有時候會有這樣一種需求,小A下載了個軟體,只是軟體中的美女過於誘惑與暴露,所以他不想讓 別人知道這是個什麼軟體,起碼不想讓別人開啟瀏覽。而這款軟體又沒有鎖,任何人都可以開啟,腫麼辦呢? 如果開啟它的時候需要輸入密碼,那該多好阿!於是,程式鎖這種應用就產生了

程式鎖不是最近才有 的,很久之前android就有這種apk了

這一期我們來苛刻如何?程式加鎖功能

首先,我們先明 確一下我們要做的程式具有什麼功能

1可以選擇需要加鎖的程式

2可以設定密碼

3可以關 閉程式鎖

這裡作為示範,我們就盡量簡化代碼

我們先說最關鍵的部分

最關鍵的地方在 於:當使用者開啟一個應用的時候,怎麼彈出密碼頁面?

這裡沒有什麼太好的辦法,需要掃描task中的 topActivity

首先,我們先獲得啟動並執行task

mActivityManager = (ActivityManager) context.getSystemService("activity");  //mActivityManager.getRunningTasks(1);//List<RunningTaskInfo>

getRunningTasks方法 返回一個List,我們來看看這個List是什麼
getRunningTasks 寫道
Return a list of the tasks that are currently running, with the most recent being first and older ones after in order.
……

返回的List是有序的,第一個是最近的,所以我們取出第一個即可,然後得到此task中的最上 層的Activity

ComponentName topActivity = mActivityManager.getRunningTasks (1).get(0).topActivity;

topActivity居然是ComponentName類型,下面的事情就好辦了,獲得包名 和類名

ComponentName topActivity = mActivityManager.getRunningTasks(1).get(0).topActivity;  String packageName = topActivity.getPackageName();  String className = topActivity.getClassName();  Log.v(TAG, "packageName" + packageName);  Log.v(TAG, "className" + className);        if (testPackageName.equals(packageName)          && testClassName.equals(className)) {      Intent intent = new Intent();      intent.setClassName("com.example.locktest", "com.example.locktest.PasswordActivity");      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      mContext.startActivity(intent);  }

由於我沒有選擇程式這一步,所以我就固定一個應用做測試,這裡選擇的是htc的note應用

String testPackageName = "com.htc.notes";  String testClassName = "com.htc.notes.collection.NotesGridViewActivity";

下面我們該想, 這段代碼何時執行了

開啟一個應用程式,系統不會發送廣播,我們無法直接監聽,所以這裡我們採取 定時掃描的策略

這裡只是一個簡單的實現,之後我們再討論最佳化

我們採取每秒中檢查一次task 的方式,這裡使用Timer吧,用Handler也一樣可以實現

private Timer mTimer;  private void startTimer() {      if (mTimer == null) {          mTimer = new Timer();          LockTask lockTask = new LockTask(this);          mTimer.schedule(lockTask, 0L, 1000L);      }  }

到這裡,其實我們的關鍵代碼就已經完成了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.