如何在共享首选项中分配唯一的字符串值

时间:2019-10-10 12:40:01

标签: java android sharedpreferences

我正在使用共享首选项将呼叫者详细信息存储在我的应用程序中,如下所示。 每当有电话时,我都会保存呼叫者的以下详细信息。

 sharedPrefCallLog = getSharedPreferences("CallLogPref", Context.MODE_PRIVATE);
    editorCallLogPref = sharedPrefCallLog.edit();
    editorCallLogPref.putString("name", Name);
    editorCallLogPref.putString("num", Number);
    editorCallLogPref.putString("city",City); 
    editorCallLogPref.apply();

对于第一个呼叫,一切正常。收到第二个呼叫时,第一个呼叫的详细信息将被清除并替换为第二个呼叫。我该如何保存一切?我想保存最近10次通话的详细信息吗?

我应该使用不同于sharedPref的其他方法吗?

任何建议都会很有帮助,谢谢:)

1 个答案:

答案 0 :(得分:1)

如果仅需要保存10条通话记录(小数据集),则共享首选项就可以了。

您需要为记录分配唯一的密钥。

private void saveCallLog(final int callRecordID){
    // key here is callRecordID
    sharedPrefCallLog = getSharedPreferences("CallLogPref", Context.MODE_PRIVATE);
    editorCallLogPref = sharedPrefCallLog.edit();
    editorCallLogPref.putString("name_"+ callRecordID, Name);
    editorCallLogPref.putString("num_"+ callRecordID, Number);
    editorCallLogPref.putString("city_"+ callRecordID,City);
    editorCallLogPref.apply();
}

要获取通话记录详细信息,请使用

private void getCallDetails(int callRecordID){
    sharedPrefCallLog.getString("name_"+ callRecordID, null);
    sharedPrefCallLog.getString("num_"+ callRecordID, null);
    sharedPrefCallLog.getString("city_"+ callRecordID, null);

}