Ich habe es endlich geschafft, den Inhalt meiner vorherigen Datenbank auf meinem aktuellen Gerät wiederherzustellen, und ich werde erklären, wie.
Die Idee war, die Sicherung von /data/data/com.android.providers.telephony von meiner vorherigen Installation auf ein virtuelles Android-Gerät zu kopieren , dort mithilfe von SMS Backup & Restore im XML-Format zu sichern und diese XML-Sicherung dann wiederherzustellen mein Gerät. SMS Backup & Restore hat die Nachrichten aus dem Backup mit den Nachrichten des aktuellen Geräts zusammengeführt, sodass ich die beiden Datenbanken nicht manuell zusammenführen musste.
In meiner Frage hat die AVD mit 6.0.0 den Inhalt meiner Datenbank nicht gelesen, da sie auf CM 13 erstellt wurde, das auf Android 6.0.1 basiert. Google scheint jedoch kein Emulator-Image auf Basis von Android 6.0.1 bereitzustellen. Daher habe ich immer noch eine AVD mit 6.0.0 verwendet. Aus Leistungsgründen habe ich es so konfiguriert, dass es eine Intel Atom (x86) -CPU emuliert, und den Intel HAXM-Treiber auf meinem PC installiert (ich habe diese Antwort befolgt, um dies zu tun).
Die mmssms.db-Datenbank enthält Eigenschaften über sich selbst, insbesondere Versionsnummern. Daher habe ich sie bearbeitet, damit Android glaubt, dass es sich um eine Datenbank einer Version handelt, mit der es sich befassen könnte. Ich habe mmssms.db in SQLite Expert geöffnet , auf die Registerkarte "Datenbank" geklickt und in der Eigenschaftsliste die folgenden Zeilen gefunden:
- schema_version
- user_version
Ich habe diese auf 44 bzw. 60 herabgestuft.
Dann habe ich mein Backup von /data/data/com.android.providers.telephony mit adb push auf die AVD übertragen , nachdem ich sichergestellt hatte, dass der Speicherort dort bereits leer war. Mit der ADB-Shell habe ich den Eigentümer und die Gruppe von allem in diesem Verzeichnis und seinen Unterverzeichnissen auf Radio und im Datenbank- Unterverzeichnis den Wert chmod auf 660 gesetzt.
Ich habe das Gerät neu gestartet.
Ich habe SMS Backup & Restore über ADB auf der AVD installiert. (Die APK-Datei dieser App befindet sich auf einem vorhandenen Gerät in / data / app auf einem Gerät, auf dem sie bereits installiert ist. Ich habe Google Play Services nicht auf dem Emulator installiert, um sie aus dem Play Store zu erhalten, sondern Sie kann das tun.)
Ich habe die Nachrichten gesichert und die resultierende XML-Datei auf mein reales Gerät kopiert, wo ich SMS Backup & Restore verwendet habe, um sie wiederherzustellen. Voilà.