这个问题他或许更想要一些建议如何以最佳方式保存一些数据。我正在做一个应用程序,通过保存图像的文件路径和所选联系人,通过设备中的ContactsContract的联系人标记设备中的图像,通过联系,我想这足以保存ID或名称那个联系人?
我需要一些建议,我应该如何使用FileOutputStream来编写这些数据。我应该,并且可以为文件中的每一行保存像“filepath,id”这样的字符串,或者最好的方法是什么?我还需要搜索文件路径和联系人是否已经在文件中,以及能够将多个联系人标记为图像。首先,我想我可以为每个图像使用一个文件,并添加所有用它标记的联系人,但这可能不是一个好方法吗?!
提供一些建议!
编辑:
如果我使用共享首选项,那么我可以使用联系人ID作为键,图像路径作为值?然后我可以添加几个具有不同值的唯一ID键?但我想,我不能在一个键上添加多个值?
答案 0 :(得分:0)
您需要某种结构化数据系统。
你试过SQLite吗? - SQLite似乎对这项工作很有帮助。
CREATE TABLE `contact`('id' INT , 'contact_id' TEXT, 'image_file_path' TEXT, TEXT, PRIMARY KEY('id'))
您搜索功能很简单;
SELECT * FROM contact WHERE contact_id ='1'
我会开始here。
答案 1 :(得分:0)
编辑:
您可以通过将联系人详细信息转换为jsonstring并插入sharedPreferences来插入联系人详细信息。
示例:
JSONObject obj=new JSONObject();
obj.put("Contactid", 1);
obj.put("ImagePath", "/sdcard/download/a.png");
String jsonstring=obj.toString();
如果你有多个联系人而不是使用json数组像这样
JSONArray array=new JSONArray("ContactDetails");
for(int i=0;i<noofcontacts;i++)
{
JSONObject obj=new JSONObject();
obj.put("Contactid", 1);
obj.put("ImagePath", "/sdcard/download/a.png");
array.put(obj);
}
jsonstring= array.toString();
保存SharedPreferences中的联系人详细信息,如
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("contactDetails", jsonstring);
editor.commit();
现在获取SharedPreference值
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
String jsoncontactdetails= sharedPreferences.getString("contactDetails", null);
我希望你知道Json Parsing。
在这种情况下,使用数据库是最佳选择。因为很难在内部存储中维护每个文件,并且它也消耗一些处理时间。最好的是联系数据库中联系人的图像路径。