常联系ID

时间:2012-05-13 21:11:09

标签: android api android-contacts

是否有任何类型的接触变量在ROM闪烁或出厂重置之间持久存在?我创建了一个应用程序,用于查找联系人ID,但显然是在出厂重置或新ROM(以及设备之间)同步时更改。我需要存储一个唯一的标识符。请帮忙。谢谢。

1 个答案:

答案 0 :(得分:0)

如果你在谈论SIM数据,也许你可能会想出一些东西。但是,如果你正在讨论一个唯一的标识符,我知道的唯一有效方法是生成一个UUID密钥并在本地和外部存储它,正如Reto Meier在Google I / O 2011中所建议的那样。这是我的片段(别介意我的javadoc)风格^^);

/**
 * This is just a local solution. For world-wide usage,
 * backup on a cloud is encouraged.
 * 
 * @reference Reto Meier - Google I/O 2011
 * 
 * @param context for accessing related shared preferences file
 * @return unique id
 */
public synchronized static String getUniqueId(Context context)
{
    String uniqueID;

    //Open shared preferences file for PREF_UNIQUE_ID
    SharedPreferences sharedPrefs = context.getSharedPreferences(PREF_UNIQUE_ID, Context.MODE_PRIVATE);

    //Fetch id, if any.
    uniqueID = sharedPrefs.getString(PREF_UNIQUE_ID, null);

    //If no id saved into shared preferences before generate new one
    if(uniqueID == null)
    {
        uniqueID = UUID.randomUUID().toString();
        Editor editor = sharedPrefs.edit();
        editor.putString(PREF_UNIQUE_ID, uniqueID);
        editor.commit();
    }

    return uniqueID;
}