Link aus Kontakt zu App

  • Antworten:2
Rob
  • Forum-Beiträge: 33

08.04.2015, 22:31:32 via Website

Guten Abend!

Ich würde gerne wissen, wie ich einem bestimmten Kontakt aus der Standard Kontakte-App ein Icon (optimalerweise) von meiner App hinzufügen kann und der User dann via Klick auf dieses Icon in meine App springen kann.
Interessant wäre natürlich noch dann herauszufinden, von welchem Kontakt man hineinspringt.

Google habe ich schon mehr als vergewaltigt (sorry für den Ausdruck) und langsam bin ich echt am Verzweifeln.

BITTE helft mir..

PS: Wie ich beispielsweise einen Kontakt und dessen Informationen wie ID, Foto usw. auslesen kann weiß ich, nur nicht wie ich diesem dann o. g. hinzufügen könnte.

Hatte auch schon Code gefunden, aber das klappt nicht so wies soll:

package helper;

import java.util.ArrayList;

import android.content.ContentProviderOperation;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Data;
import android.util.Log;

public class ContactBadge {

private static final String IM_LABEL = "Test protocol";
private static final String LOG_TAG = "Log";

/**
 * This method add my account under IM field at default Contact application
 * 
 * Labeled with my custom protocol.
 * 
 * @param contentResolver
 *            content resolver
 * @param uid
 *            User id from android
 * @param account
 *            account name
 */
public static void updateIMContactField(ContentResolver contentResolver,
        String uid, String account) {

    ContentValues contentValues = new ContentValues();

    contentValues.put(ContactsContract.Data.RAW_CONTACT_ID,
            Integer.parseInt(uid));
    contentValues.put(ContactsContract.Data.MIMETYPE,
            ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE);
    contentValues.put(ContactsContract.CommonDataKinds.Im.TYPE,
            ContactsContract.CommonDataKinds.Im.TYPE_CUSTOM);
    contentValues.put(ContactsContract.CommonDataKinds.Im.LABEL, IM_LABEL);
    contentValues.put(ContactsContract.CommonDataKinds.Im.PROTOCOL,
            ContactsContract.CommonDataKinds.Im.PROTOCOL_CUSTOM);
    contentValues.put(ContactsContract.CommonDataKinds.Im.CUSTOM_PROTOCOL,
            IM_LABEL);

    contentValues.put(ContactsContract.CommonDataKinds.Im.DATA, account);

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
    ops.add(ContentProviderOperation
            .newInsert(ContactsContract.Data.CONTENT_URI)
            .withValues(contentValues).build());

    try {
        contentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
    } catch (Exception e) {
        Log.d(LOG_TAG, "Can't update Contact's IM field.");
    }
}

/**
 * This method remove IM entry at default Contact application.
 * 
 * @param contentResolver
 *            content resolver
 * @param uid
 *            User id from android
 * @param account
 *            account name
 */
public static void removeIMContactField(ContentResolver contentResolver,
        String uid, String account) {
    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

    ops.add(ContentProviderOperation
            .newDelete(Data.CONTENT_URI)
            .withSelection(
                    ContactsContract.Data.RAW_CONTACT_ID + "=? and "
                            + ContactsContract.Data.MIMETYPE + "=? and "
                            + ContactsContract.CommonDataKinds.Im.DATA
                            + " = ?",
                    new String[] {
                            String.valueOf(uid),
                            ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE,
                            account }).build());

    try {
        contentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
    } catch (Exception e) {
        Log.d(LOG_TAG, "Can't delete Contact's IM field.");
    }
}

/**
 * This method remove IM all entries at default Contact application
 * 
 * @param contentResolver
 *            content resolver
 */
public static void deleteAllIMContactField(ContentResolver contentResolver) {
    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

    ops.add(ContentProviderOperation
            .newDelete(Data.CONTENT_URI)
            .withSelection(
                    ContactsContract.Data.MIMETYPE
                            + "= ? and "
                            + ContactsContract.CommonDataKinds.Im.CUSTOM_PROTOCOL
                            + "= ?",
                    new String[] {
                            ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE,
                            IM_LABEL }).build());

    try {
        contentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
    } catch (Exception e) {
        Log.d(LOG_TAG,
                "An exception occurred when deleting all IM field of Contact.");
    }
}

}

— geändert am 08.04.2015, 22:33:00

Antworten
Rob
  • Forum-Beiträge: 33

10.04.2015, 23:56:16 via Website

Hier habe ich schonmal was gefunden, dort wird ein neuer Kontakt erstellt und er bekommt die gewünschte Verknüfpung.

Wie ich dies allerdings bei einem bereits vorhandenen Kontakt realisiere und dem "Custom Field" Daten mitgebe, ist mir allerdings ein Rätsel.

— geändert am 12.04.2015, 19:59:02

Antworten