Связаться с пользовательскими полями - PullRequest
5 голосов
/ 10 июня 2010

Хорошо, я немного новичок в Android SDK, так что простите, если мой вопрос не имеет смысла или очень тривиален.Я хотел бы добавить настраиваемое поле для контактов, которое содержит имя пользователя контактов на веб-сайте, для которого я делаю это приложение.И, с этим настраиваемым полем, я хотел бы иметь возможность щелкнуть по нему (например, «Отправить сообщение» или «Позвонить на мобильный»), чтобы я мог перейти к определенной операции в моем приложении с TextView, установленным с именем пользователячто я только что нажал.

Извините, если это немного сбивает с толку, если вам нужно что-нибудь еще, дайте мне знать!

Ответы [ 3 ]

4 голосов
/ 29 марта 2011

Это работает!Но я изменил 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);
}
3 голосов
/ 10 июня 2010

Вы должны создать свой собственный тип пантомимы для них.

Вот пример, который сохраняет логическое значение как мой пользовательский тип пантомимы для контактов. Использует последний 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();
0 голосов
/ 15 июня 2012

Чтобы добавить настраиваемое поле, необходимо добавить настраиваемый mimetype в таблицу MIMETYPE.Но у нас нет прямого доступа к таблице 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 и присваивает ему идентификатор, и этот идентификатор используется в столбце mimetype_id таблицы данных.

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