1

Ich habe versucht, das Anwesenheitssymbol zu verwenden und die Anwesenheit für meine benutzerdefinierten Benutzer anzuzeigen. egal, was ich getan habe, habe ich die Fehler aufgetreten einfügen Fehler oder die Anwesenheit wurde nicht auf meine Kontakte angezeigt.Anwesenheitssymbol mit Sync-Adapter bei Kontakten anzeigen

values.put(StatusUpdates.DATA_ID, profileId); 
    values.put(StatusUpdates.STATUS, user.getStatus()); 
    values.put(StatusUpdates.PROTOCOL, Im.PROTOCOL_CUSTOM); 
    values.put(StatusUpdates.CUSTOM_PROTOCOL, CUSTOM_IM_PROTOCOL); 
    values.put(StatusUpdates.IM_ACCOUNT, username); 
    values.put(StatusUpdates.IM_HANDLE, user.getuserID()); 
    values.put(StatusUpdates.STATUS_RES_PACKAGE, context.getPackageName()); 
    values.put(StatusUpdates.STATUS_ICON, R.drawable.tray_icon); 
    values.put(StatusUpdates.STATUS_LABEL, R.string.app_name); 
    values.put(StatusUpdates.PRESENCE, StatusUpdates.AVAILABLE); 

Gibt es jemanden mit der Lösung?

Antwort

0

Diese Zeile sieht verdächtig:

values.put(StatusUpdates.DATA_ID, profileId);

Was ist das Profil? Falls angegeben, sollte StatusUpdates.DATA_ID die _ID der IM-Zeile in der Tabelle "data" sein. Sie müssen diese Zeile haben, bevor Sie einen Status einfügen.

Die gängige Praxis besteht darin, eine Zeile in der Tabelle "data" zu haben, dann IM_PROTOCOL und IM_HANDLE (die mit Im.DATA verglichen wird) zu liefern, aber DATA_ID in einer Statusaktualisierung nicht angegeben. ContactsProvider vergleicht den Status automatisch mit der Datenzeile und speichert eine Suchabfrage.

Auch stellen Sie sicher, dass Sie bulkInsert für Status verwenden, wenn Sie können. Das wird die Dinge sehr beschleunigen.

+0

danken Ich werde es versuchen. profileId ist die Rohkontakt-ID, die ich in der rohen Kontakttabelle suche. Der Benutzer wurde zuvor eingefügt und jetzt habe ich eine rohe Kontakt-ID, die ich verwende. anscheinend nicht richtig machen .... – MaTriXy

+0

Ich werde aktualisieren, wenn erfolgreich – MaTriXy

Verwandte Themen