Die interne Kontakte-Datenbank von Android hat eine definierte und relativ komplexe Struktur.
Wenn sich jemand (Developer) damit nicht richtig auskennt oder absichtlich für seine App Tabellen bzw. Datensatz-Felder dieser Datenbank zweck-entfremdet "missbraucht", dann kann es zu unerwünschten Ergebnissen führen.
Low-Level-Loggen wirst du so etwas nur schwer (adb logcat; Android-SDK), da du die Sources eher nicht hast.
Die Datenbank-Struktur (der Kontakte) wird auch von Googles Seite ab und zu geändert/angepasst, je nach Release von Android.
Wenn man als Developer das nicht beachtet - warum auch immer - dann hat der User ein Problem.
Mein Verdacht ist, dass eine der Third-Party-Apps sich nicht richtig "benimmt" und MPE die Daten so interpretiert, dass du die leeren Kontakte bekommst. - Außerdem ist es immer komplex und problematisch, an zwei Stellen (gleichzeitig) Daten zu erzeugen/ändern (Phone/Rechner) und diese dann zu synchronisieren/replizieren. - Das kann zu Replizier-Konflikten führen mit denen die unterschiedlichen Apps/Programme dann unterschiedlich umgehen, was alles noch verschlimmert.
Dann kommt auch noch Google selbst mit ins Spiel mit deren Sync-Adaptern. - Google kann sogar, ohne dass man das gleich merkt (Notification, Abfrage-Dialog et al.) einfach so hintenrum Apps, Services und Datenbank-Strukturen ändern. - Das sieht man immer schön an den Play-Diensten und am Play Store, die sich einfach mal so ungefragt updaten, wenn man das nicht verhindert.
Was ich in so einem Fall mache, wenn keine Lösung von anderer Seite zu finden ist (ähnliche oder identische Fälle)?
Systematisches Black-Box-Testing (mit einem definierten Ausgangszustand):
- Alle Fremd-Apps und Daten löschen (Werksreset).
- Alle beeinflussenden (externen) Faktoren ausschließen (W-LAN, USB, SIMs, SD Card); s. o. meine Liste
- definierte Ausgangsdaten generieren (in deinem Fall vielleicht ein paar Kontakte)
- Davon dann einen Snapshot machen (CWM-R), dann kann man das Test Bed immer wieder "zurückdrehen" (MPE am Rechner nicht vergessen)
loop:
- Jede Fremd-App erstmal nur einzeln installieren
- Dann vorher definierte Testfälle (mit identischen Test-Daten) durchspielen (z. B. CRUD Kontakte - Also Create Read Update Delete)
- Ergebnisse bewerten/festhalten (schriftlich, Screenshots)
- Reset mit Snapshot (nächste App)
loopend:
- Wenn die Apps alle einzeln durchgetestet wurden ohne (negatives) Ergebnis, dann mit Kombinationen anfangen, bis sich was "bewegt"
Wer sagt, das Fehlersuche leicht ist und schnell geht (deswegen gibt es auch oft keine Stock ROM Updates/Bug Fixes => zu teuer)?