1

这个问题他也许更多的是寻求一些建议,如何以最好的方式保存一些数据。我正在做一个应用程序,通过将图像的文件路径与选定的联系人一起保存,我用设备中 ContactsContract 中的联系人标记设备中的图像,并且通过联系人,我想保存 ID 或名称就足够了那个联系方式?

我需要一些建议,我应该如何使用 FileOutputStream 来写入这些数据。我应该,我可以为文件中的每一行保存像“filepath,id”这样的字符串吗?或者最好的方法是什么?我还需要搜索文件路径和联系人是否已经在文件中,以及能够将多个联系人标记到图像中。首先,我认为我可以为每个图像使用一个文件并添加所有带有它标记的联系人,但这可能不是一个好方法吗?!

提一些建议!

编辑:

如果我使用共享首选项,那么我可以使用联系人 ID 作为键,使用图像路径作为值吗?那么我可以添加几个具有不同值的唯一 ID 键吗?但我想,我不能为一个键添加多个值?

4

2 回答 2

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'

我会从这里开始。

于 2013-02-25T12:59:46.637 回答
0

编辑:

您可以通过将其转换为 jsonstring 并放入 sharedPreferences 来插入联系人详细信息。

例子:

    JSONObject obj=new JSONObject();
    obj.put("Contactid", 1);
    obj.put("ImagePath", "/sdcard/download/a.png");

String jsonstring=obj.toString();

如果您有多个联系人而不是使用 json Array 像这样

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。


在这种情况下,使用数据库是最好的选择。因为很难维护内部存储中的每个文件,并且还需要一些处理时间。最好是联系人数据库中联系人的图片路径。

于 2013-02-25T13:12:15.123 回答