好的,我對Android SDK有點新鮮,所以如果我的問題沒有意義或者非常微不足道,請原諒我。我想爲聯繫人添加一個自定義字段,其中包含我正在執行此應用的網站上的聯繫人用戶名。而且,通過這個自定義字段,我希望能夠點擊它(例如「發送消息」或「調用移動設備」),以便我可以在我的應用程序中使用特定的Activity,並使用用戶名設置TextView我只是點擊了。聯繫自定義字段
對不起,如果這有點令人困惑,如果你需要其他東西讓我知道!
好的,我對Android SDK有點新鮮,所以如果我的問題沒有意義或者非常微不足道,請原諒我。我想爲聯繫人添加一個自定義字段,其中包含我正在執行此應用的網站上的聯繫人用戶名。而且,通過這個自定義字段,我希望能夠點擊它(例如「發送消息」或「調用移動設備」),以便我可以在我的應用程序中使用特定的Activity,並使用用戶名設置TextView我只是點擊了。聯繫自定義字段
對不起,如果這有點令人困惑,如果你需要其他東西讓我知道!
你必須爲這些創建你自己的mime類型。
這是一個將布爾值作爲我的自定義MIME類型保存到聯繫人的示例。它採用最新的SDK 2.1
public static final String MIMETYPE_FORMALITY = "vnd.android.cursor.item/useformality";
public clsMyClass saveFormality() {
try {
ContentValues values = new ContentValues();
values.put(Data.DATA1, this.getFormality() ? "1" : "0");
int mod = ctx.getContentResolver().update(
Data.CONTENT_URI,
values,
Data.CONTACT_ID + "=" + this.getId() + " AND "
+ Data.MIMETYPE + "= '"
+ clsContacts.FORMALITY_MIMETYPE + "'", null);
if (mod == 0) {
values.put(Data.CONTACT_ID, this.getId());
values.put(Data.MIMETYPE, clsContacts.FORMALITY_MIMETYPE);
ctx.getContentResolver().insert(Data.CONTENT_URI, values);
}
} catch (Exception e) {
Log.v(TAG(), "saveFormality failed");
}
return this;
}
public boolean getFormality() {
if (data.containsKey(FORMALITY)) {
return data.getAsBoolean(FORMALITY);
} else {
// read formality
Cursor c = readDataWithMimeType(clsContacts.MIMETYPE_FORMALITY, this.getId());
if (c != null) {
try {
if (c.moveToFirst()) {
this.setFormality(c.getInt(0) == 1);
return (c.getInt(0) == 1);
}
} finally {
c.close();
}
}
return false;
}
}
public clsMyClass setFormality(Boolean value) {
data.remove(FORMALITY);
data.put(FORMALITY, value);
return this;
}
/**
* Utility method to read data with mime type
*
* @param mimetype String representation of the mimetype used for this type
* of data
* @param contactid String representation of the contact id
* @return
*/
private Cursor readDataWithMimeType(String mimetype, String contactid) {
return ctx.getContentResolver().query(
Data.CONTENT_URI,
new String[] {
Data.DATA1
},
Data.RAW_CONTACT_ID + "=" + contactid + " AND " + Data.MIMETYPE + "= '" + mimetype
+ "'", null, null);
}
用法
objContact.setFormality(true).saveFormality();
什麼在數據 「如果(data.containsKey(手續))」 – 2017-07-21 05:38:42
它的工作!但我改變Data.CONTACT_ID到Data.RAW_CONTACT_ID這裏:
if (mod == 0) {
values.put(Data.CONTACT_ID, this.getId());
values.put(Data.MIMETYPE, clsContacts.FORMALITY_MIMETYPE);
ctx.getContentResolver().insert(Data.CONTENT_URI, values);
}
和這裏:'INT MOD = ctx.getContentResolver()更新( Data.CONTENT_URI, 值, Data.CONTACT_ID + 「=」 + this.getId()+「AND」 + Data.MIMETYPE +「='」 + clsContacts.FORMALITY_MIMETYPE +「'」,null);' – 2013-02-18 18:44:02
要添加您需要在MIMETYPE表中添加自定義MIME類型的自定義字段。但是我們沒有直接訪問MIMETYPE表。所以下面可以做:
public static final String MIMETYPE="vnd.android.cursor.item/favsong";
ContentValues values = new ContentValues();
values.put(Data.RAW_CONTACT_ID, id);
values.put(Data.MIMETYPE, MIMETYPE);
values.put(Data.DATA1, "MyFavSong");
Uri dataUri = getContentResolver().insert(Data.CONTENT_URI, values);
我們所做的是,我們已經創建了一個自定義的MIMETYPE作爲字符串常量。 然後使用插入查詢,我們在數據表中插入一個新行,該行有一個我們想要關聯自定義字段的人的RAW_CONTACT_ID,在MIMETYPE列中放置我們自己的mimetype,在DATA1列中放上最喜歡的歌。這裏系統內部在MIMETYPE表中添加新的mimetype,並給它一個ID,並且該ID用於Data表的mimetype_id列。
A你確定這段代碼添加了新字段,我嘗試了這段代碼,但是它用MyFavSong替換了我的聯繫人名稱。爲什麼? – 2013-10-31 12:05:34
可能重複的[如何向聯繫人添加新字段?](http://stackoverflow.com/questions/2733589/how-to-add-new-fields-to-the-contact) – Pentium10 2010-06-09 21:53:11
可能重複的[如何以編程方式將圖片(位圖)分配給聯繫人?](http://stackoverflow.com/questions/3076197/how-to-programmatically-assign-a-picture-bitmap-to-a-contact ) – Pentium10 2010-06-19 19:16:12