隱藏應用功能的需求
在Android的裝置上的應用分為系統應用和使用者自己安裝的應用。其中系統應用是無法刪除的,但是部分使用者不用系統應用又無法刪除,“眼不見為淨”,就可以使用隱藏功能將其隱藏起來。有的部分應用可能不想被其它人使用(想你藉手機玩的人),就可以使用隱藏功能將其隱藏起來。
隱藏應用功能涉及的知識
1.GridView
GridView是Android中的資料顯示控制項之一。GridView的視圖相片順序與矩陣類似,當螢幕上有很多元素(文字、圖片或其他元素)需要顯示時,可以使用GirdView。既然有多個元素要顯示,就需要使用BaseAdapter來儲存這些元素。使用者可能會選擇其中一個元素進行操作,這就需要設定事件監聽setOnItemClickListener來捕捉和處理事件。
2.資料持久化
1) 使用Preferences儲存應用程式資料
Preferences是一種輕量級的資料存放區機制,他將一些簡單的資料類型的資料,包括boolean類型,int類型,float類型,long類型 以及String類型的資料,以索引值對的形式儲存在應用程式的私人Preferences目錄(/data/data/<包名>/shared_prefs/)中,這種Preferences機制廣泛應用於儲存應用程式中的配置資訊。
2)檔案I/O
Android平台主要通過java.io.FileInputStream和java.io.FileOutputStream這兩個類來實現對檔案的讀寫,java.io.File類則用來構造一個具體指向某個檔案或者檔案夾的對象。
需要注意的是:每個應用程式所在的包都會有一個私人的儲存資料的目錄,只有屬於這個包中的應用程式才有寫入的許可權,每個包中應用程式的私人資料目錄位於 Android系統中的絕對路徑/data/data/<package>/目錄中,除了私人目錄,應用程式還擁有/sdcard目錄即 Android裝置上的SD卡的寫入許可權。檔案系統中其他的系統目錄,第三方應用程式都是不可寫的。
3)SQLite資料庫
在實際的應用程式編寫中,為了更好的對SQlite資料的建立,開啟,更改進行管理,往往會編寫一個SQLiteOpenHelper的資料庫輔助類來協助我們建立和開啟資料庫。
利用SQLiteDatabase對象操作資料庫,他除了提供execSQL()和rawQuery()這種直接對SQL語句解析的方法外,還針對insert,upate,delete,select等操作專門定義了相關的方法。
Cursor的使用:查詢資料庫均會把查詢的結果封裝在一個Cursor的子類對象中返回。
4)ContentProvider
當資料需要在應用程式之間共用時,我們就可以用ContentProvider為資料庫定義一個URI。之後其他應用程式對資料進行查詢或者修改時候,只需要從當前內容物件獲得一個ContentResolver傳入相應的URI就可以了。
隱藏應用功能詳細設計
隱藏應用主要涉及一下四個資料類型
| 名稱 |
類型 |
作用 |
| mApps |
List |
存放裝置上所有安裝應用的包名 |
| mDisApp |
List |
存放顯示的應用的包名 |
| hm |
HashMap |
存放包名與Flag的索引值對 |
| DB |
SQLite資料庫 |
存放使用者關於隱藏的設定 |
使用者在操作的過程中可能安裝或者卸載應用,所以要考慮hm與DB中資料的一致性,保證兩者的一致性是在Activity的生命週期中的onStop()和onCreate()中完成的,兩者的流程圖如下所示: