2012-12-15 97 views
0

我實現了應用程序內計費V3,我想一個方法來保持某種其中包含3列字符串和布爾值表存儲

(字符串)產品名稱,(串) SKU(布爾)真/假

什麼是做到這一點的最好方法是什麼?最好的方式(在我看來)允許我保留一個靜態的可讀值列表,其中前兩個是字符串,第三個是布爾值。在開始時,布爾列的所有值都是false,但是當我查詢購買時,我可以輕鬆地重置值。

我想補充,

我反對SQLite數據庫的原因,他們只是太容易破解。我寧願在代碼中創建它,因此我一個ArrayList之間辯論的ArrayList或矩陣或類似以下內容中:

private static class CatalogEntry { 
    public String sku; 
    public String name; 

    public CatalogEntry(String sku, String name) { 
     this.sku = sku; 
     this.name = name; 
    } 
} 

private static final CatalogEntry[] CATALOG = new CatalogEntry[] { 

new CatalogEntry("android.test.purchased", "Item1"), 
     new CatalogEntry("android.test.canceled", "Item2"), 
     new CatalogEntry("android.test.refunded", "Item3"), 
     new CatalogEntry("android.test.item_unavailable", "Item4") 

}; 

有沒有一種方法,如果我添加一個重置目錄數組中的值第三列,否則我正在考慮使用這個和標準的數組列表。

+0

這似乎是一個相當寬泛的主題...我只是不停的SQLite數據庫的列'INT ID,VARCHAR名,VARCHAR SKU,TINYINT purchased',或類似的。 (還記得那根深蒂固的設備都可以訪問這些數據。) – Eric

+0

這是我的SQLite數據庫的擔心:/我寧願避免使用SQLite您在設備上存儲易受篡改 – AndroidPenguin

+1

什麼。授權與服務器是你最好的選擇。可能使用某種加密的本地數據也將工作(使用安全和獨特的鍵,例如AES'ing;或可能使用類似BCrypt東西哈希進行比較後,存儲的數據)。 – Eric

回答

0

使用SQLite有四列:

  • SKU
  • 而purchaseDate(或空,如果不購買)
  • md5Hash

當進行購買,你只串聯的SKU,名字,而purchaseDate,設備ID,和PSK,做出md5Hash並隨着行中的其他數據存儲。當您檢查表格的內容時,您會比較存儲的數據和md5,並且您可以驗證購買是否有效,或表格是否被篡改。您甚至可以讓用戶將購買表備份到sdcard(或使用Android備份)。