Как назначить уникальное строковое значение в общих настройках - PullRequest
0 голосов
/ 10 октября 2019

Я использую общие настройки, чтобы хранить информацию о вызывающем абоненте в моем приложении следующим образом. Всякий раз, когда есть звонок, я сохраняю следующие данные звонящего.

 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 Ответ

1 голос
/ 10 октября 2019

Если вам нужно сохранить только до 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);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...