Nach dem schmutzigen Flashen meines OnePlus One (Speck) von CM12.1 auf CM13 wird ständig ein Popup zum Schließen von Dialogen erzwungen
Unfortunately the process com.android.phone has stopped
Logcat ist mit folgenden Stacktraces gefüllt:
Shutting down VM
FATAL EXCEPTION: main
Process: com.android.phone, PID: 13148
java.lang.RuntimeException: Unable to get provider com.android.providers.telephony.TelephonyProvider: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.app.ActivityThread.installProvider(ActivityThread.java:5205)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4797)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4737)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1424)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5466)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.database.CursorWindow.nativeGetString(Native Method)
at android.database.CursorWindow.getString(CursorWindow.java:438)
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
at com.android.providers.telephony.TelephonyProvider$DatabaseHelper.getStringValueFromCursor(TelephonyProvider.java:993)
at com.android.providers.telephony.TelephonyProvider$DatabaseHelper.copyPreservedApnsToNewTable(TelephonyProvider.java:905)
at com.android.providers.telephony.TelephonyProvider$DatabaseHelper.onUpgrade(TelephonyProvider.java:641)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:256)
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
at com.android.providers.telephony.TelephonyProvider.onCreate(TelephonyProvider.java:1457)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1748)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1723)
at android.app.ActivityThread.installProvider(ActivityThread.java:5202)
... 10 more
Sobald ich das permanente UI-Popup irgendwie los bin, scheint es, als würde es com.android.phone
mindestens 10 Mal pro Sekunde abstürzen, Logcat überfluten und es fast unmöglich machen, das Telefon zu benutzen.
Gibt es Hoffnung auf eine Lösung oder ist ein Hard-Reset die einzige Option?
cyanogenmod
rom-flashing
custom-roms
force-close
friederbluemle
quelle
quelle
com.android.providers.telephony
(App trägt die Bezeichnung "Telefon / Telefonie-Speicher / Anbieter"). Wenn Sie schon dabei sind, machen Sie es auch für die Telefon-App (com.android.phone
), starten Sie neu und teilen Sie uns die Ergebnisse mit. Es scheint, dass die Datenbank voncom.android.providers.telephony
nicht gelesen werden kann. Möglicherweise können Sie keine Daten für diese Apps löschen. Entfernen Sie in diesem Fall ihre Verzeichnisse / data / data vom Erdboden.Antworten:
Dies lag an einer Änderung des Codes.
Löschen Sie , wie Firelord gesagt hat, die Daten für die Apps. Dies kann folgendermaßen geschehen ( dies löscht auch Ihre SMS / MMS-Datenbank, stellen Sie also sicher, dass Sie diese vorher sichern ):
Das Flag -f steht für force und das Flag -r bedeutet rekursiv.
quelle
TelephonyProvider: dbh.onUpgrade:+ db=SQLiteDatabase: /data/user/0/com.android.providers.telephony/databases/telephony.db oldV=1114120 newV=1376264
Nach dem Entfernen des Datenverzeichnisses und einem Neustart wurden die erzwungenen Dialogfelder zum Schließen gestoppt. Was war in der Datenbank? Ich habe festgestellt, dass alle meine Textnachrichten weg sind. Noch etwas?Ich hatte das gleiche Problem beim Upgrade von CM12.1 auf CM13. Sie können dieses Problem lösen, ohne Ihre Datenbankdateien zu löschen und damit Daten zu verlieren, wie in den anderen Antworten vorgeschlagen.
Der Schuldige scheint eine defekte Datenbank im Upgrade-Code im TelephonyProvider von CM zu sein. Die
ppp_number
Spalte der Carrier-Tabelle ist nicht vorhanden, der Upgrade-Code geht jedoch davon aus, dass sie bereits vorhanden ist.Ich habe es gelöst, indem ich die Datei telephony.db auf meinen lokalen Linux-Computer kopiert und die Datenbankversion auf Version zurückgesetzt habe
16 << 16 | 6 = 1048582
, um den Upgrade-Code zum Hinzufügen der fehlenden Spalten zu zwingen. DieALTER TABLE
Anweisungen im verknüpften Code werden durch Try-Catch-Blöcke geschützt, sodass es keine Rolle spielt, ob einige der Spalten bereits vorhanden sind. Starten Sie das Telefon in die Wiederherstellung (z. B. TWRP), um AdB-Root-Berechtigungen zu erhalten, und vermeiden Sie Sperrenrennen mit der Android Runtime, die ständig versucht, den Telefonieanbieter zu starten.Erstellen Sie Backups
Öffnen Sie dann die Datenbank mit SQLite und legen Sie die Version fest
Laden Sie die geänderte Datenbank zurück auf das Gerät und korrigieren Sie die Berechtigungen
Sie können dies auch auf dem kaputten System versuchen, was ich nicht empfehlen würde. Sie müssten wahrscheinlich root
adb root
werden, um die Dateien mit zu kopieren und zu ändernadb
.quelle
*.db*
Dateien hat das Problem jedoch gelöst.$ sqlite3 telephony.db VACUUM
Ich habe Sebastians Lösung ausprobiert, aber der Fehler blieb bestehen. Die akzeptierte Antwort führt dazu, dass alle Ihre SMS verloren gehen. Daher war dies für mich keine Option. Nach dem Booten in den Wiederherstellungsmodus und dem Löschen der Dateien
Das Telefon funktionierte wieder einwandfrei. Die Dateien scheinen nur automatisch generierte Daten zu enthalten, daher ist es sicher, sie zu löschen.
quelle
Wenn Sie nicht in eine ADB-Shell gelangen oder das Verzeichnis von Ihrem Telefon entfernen können, weil es unbrauchbar ist, können Sie das Verzeichnis auch aus der TWRP-Wiederherstellung entfernen.
quelle
Hatte das gleiche Problem nach dem Update von CM12 auf CM13. So konnte ich das Problem beheben:
Ich habe diese beiden Verzeichnisse entfernt
vollständig von meinem Telefon (Nexus 5). Früher
ES Explorer
musste ich mich einschaltenRoot Mode
undShow Hidden Files
Dateien in diesem Verzeichnis löschen können.Anrufprotokoll und SMS sind noch vorhanden. Sie können keine Nachteile erkennen, die sich aus dem Löschen dieser Verzeichnisse ergeben. Alles scheint wieder reibungslos zu funktionieren.
quelle