2010-08-25 155 views
2

我需要安全地存儲私人用戶數據,以便它可以保存在我的應用程序啓動以及設備重置。黑莓手機:如何使用PersistableRIMKeyStore?

這將是一個字符串,我猜最多1000個字符。

有人告訴我可以使用RIM KeyStore API。

那麼,我花了數小時搜索RIM KeyStore API使用情況。 JDE示例不包含任何有用的內容。

看起來這是在BB開發中很少見的事情,所以幾乎沒有這方面的官方信息。

我讀thisthis。從那些我理解我的最佳選擇是使用PersistableRIMKeyStore(它堅持跨設備重置)。但是我無法弄清楚實施的具體內容。

任何人都可以幫助示例代碼或指向我一些指導?也許對我的任務有一個更好/更簡單的方法/方法,所以,請讓我知道它。

非常感謝!

+3

PersistableRIMKeyStore用於保存RIM密鑰庫。要跨越重置持續保存用戶數據,只需使用PersistentStore,如果您想要保護deta,則可以使用ContentProtectedHashtable或ContentProtectedVector – Richard 2010-08-25 18:01:52

+0

Richard,非常感謝您的快速響應!我會研究你的建議。 – 2010-08-25 19:22:33

+0

@Richard:你可以發表你的評論作爲答案 - 我將接受它作爲解決方案。 – 2011-08-21 17:32:24

回答

0

PersistableRIMKeyStore用於保留RIM密鑰庫。要在重置時保留用戶數據,只需使用PersistentStore,如果您想要保護deta,則可以使用ContentProtectedHashtable或ContentProtectedVector。

+0

指向我正確的方向('PersistentStore' +'ContentProtectedHashtable')是我所需要的。 – 2011-08-21 19:38:33

1

如果您使用的商店與「PersistentStoreDemo」相同,如果您不知道可以通過轉到文件 - >導入 - >黑莓示例獲取該商店,則可以加密商店中的信息。最重要的是,如果用戶擁有內容保護,則可以使用ContentProtectedHashtable自動知道該信息將被加密。因此,如果沒有內容保護,信息將被加密一次,隨着它的啓動,它將被雙重加密,並且存儲着難以猜測的應用程序名稱空間的長散列(顯然,因爲要註冊您需要它的商店)。下面是我使用的:

package ca.dftr.phillyd.lib.persistables; 

import net.rim.device.api.system.ApplicationDescriptor; 
import net.rim.device.api.util.ContentProtectedHashtable; 
import net.rim.device.api.util.Persistable; 

/** 
* Basic class for storing application specific information. 
* Information such as application settings or whether the license agreement was accepted. 
* For more complex and specific classes they should be implemented separately and implement persistable 
* @author deforbes 
*/ 
public class AppInfo extends ContentProtectedHashtable implements Persistable { 

    private String _appName = null; 
    private String _version = null; 

    /** 
    * Constructs the application info, creates and persists a hashtable for application settings. 
    * @param uniqueHexAppIdentifier Can be automatically created in resource class (BUNDLE_ID) or generated using other unique information. 
    */ 
    public AppInfo() {  
     ApplicationDescriptor appDesc = ApplicationDescriptor.currentApplicationDescriptor(); 
     _appName = appDesc.getName(); 
     _version = appDesc.getVersion(); 
    } 

    /** 
    * Get the Name of the application 
    * @return The application name from the app descriptor 
    */ 
    public String getName() 
    { 
     return _appName; 
    } 

    /** 
    * Get the Version of the application 
    * @return The application version from the app descriptor 
    */ 
    public String getVersion() 
    { 
     return _version; 
    } 
} 

隨着一類常量(可以包括在上面,如果你想)。例如,從我的PhillyD應用程序:

package ca.dftr.phillyd.lib.persistables;

/** 
* Keys for the AppInfo array 
* @author deforbes 
*/ 
public class AppInfoKeys { 
    public static final String QUALITY = "Quality"; 
    public static final String CHANNEL = "Channel"; 
    public static final String CHANNEL_NAME = "Channel_Name"; 
    public static final String SEARCH = "Search"; 
    public static final String LICENSE_ACCEPTED = "isLicenseAccepted"; 
    public static final String VIDEOS_PER_PAGE = "NumPerPage"; 
    public static final Boolean DOWNLOAD_THUMBS = new Boolean(true); 
} 
+0

感謝您的回覆,但請注意,問題是一歲。 :)這意味着它已經過時。我應該關閉/刪除它以防止人們回答過時的問題。即將做到這一點.. – 2011-08-21 06:59:57

+0

如果這是正確的答案,你應該標記它正確。如果有人搜索這個,並且你刪除了它,那隻會吸引:) – DFTR 2011-08-21 16:53:41

+0

但是,如果它不是正確的答案。是的...刪除它。 – DFTR 2011-08-21 16:54:41