2017-04-13 4 views
0

Ich habe dieses Problem;Android Nougat - Kontakte Schema falsch

ContentProvider (contacts) - no such column: metadata_dirty

Mein Telefon ist Lager, nicht verwurzelt, HTC 10.

Ich versuche, es zu lösen.

Option 1 scheint Telefon zu sein, sqlite3 zu installieren und eine alter table-Abfrage auszuführen.

Bevor ich mein Telefon nicht root, ging ich für Option 2 (ich rate möglich); Nehmen Sie die Template-App und ändern Sie sie, um die alter table-Abfrage einmal auszuführen.

Und das ist, wo ich stecke - wie man zu der RAW Kontakte-Datenbank ohne die Handler, die keine ALTER TABLE-Funktionalität zu bieten scheinen zu bekommen?

Antwort

0

Wie gelangen Sie zur RAW-Kontaktdatenbank, ohne die Handler zu verwenden, die keine ALTER TABLE-Funktionalität zu bieten scheinen?

Sie müssten Ihr Gerät rooten. Die Kontakt-Datenbank liegt nicht dort, wo eine App hinkommt, aus offensichtlichen Datenschutzgründen. Stattdessen ist die Kontaktdatenbank Teil des internen Speichers für die Kontakte-App und Ihre App hat keinen direkten Zugriff auf diese Datenbank.

+0

Vielen Dank für das Feedback zu diesem. Ich vermutete, dass eine Backup-App mein Kontaktlistenschema bei einer Wiederherstellung durchbrochen hat. Wie auch immer, das Einrichten des Telefons ging, konfigurieren, wiederherstellen und dann upgraden, also sollte dies nicht geschehen sein. Wenn die Backup-App nicht direkt in die Datenbank schreiben kann, wie ist das Telefon in diesen Zustand geraten? –

+0

@ user3800535: Schlägt mich. Ihre Abhilfe besteht darin, eine explizite Spaltenliste bereitzustellen. Irgendwie ist der 'ContactContract'-Anbieter nicht mit seiner Datenbankstruktur synchronisiert. Die Standardspaltenliste enthält diese mythische 'metadata_dirty' Spalte. Wenn Sie diese Spalte (und alle anderen fehlenden) einfach vermeiden, sollte Ihr Code funktionieren. – CommonsWare