Mon téléphone vient de décider qu'il devrait spammer une exception sur mon écran qui se réouvre dès que je la tape.
Un examen de logcat révèle ce qui suit lancé plusieurs fois par seconde:
SQLiteLog: (14) cannot open file at line 34327 of [605907e73a]
SQLiteLog: (14) os_unix.c:34327: (13) open(/data/user/0/com.android.providers.contacts/databases/contacts2.db-shm) -
SQLiteLog: (14) statement aborts at 1: [PRAGMA user_version;] unable to open database file
SQLiteLog: (14) cannot open file at line 34327 of [605907e73a]
SQLiteLog: (14) os_unix.c:34327: (13) open(/data/user/0/com.android.providers.contacts/databases/contacts2.db-shm) -
AndroidRuntime: FATAL EXCEPTION: Worker-1
AndroidRuntime: Process: android.process.acore, PID: 9149
AndroidRuntime: android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file (code 14)
AndroidRuntime: at android.database.sqlite.SQLiteConnection.nativeExecuteForLong(Native Method)
AndroidRuntime: at android.database.sqlite.SQLiteConnection.executeForLong(SQLiteConnection.java:599)
AndroidRuntime: at android.database.sqlite.SQLiteSession.executeForLong(SQLiteSession.java:652)
AndroidRuntime: at android.database.sqlite.SQLiteStatement.simpleQueryForLong(SQLiteStatement.java:107)
AndroidRuntime: at android.database.DatabaseUtils.longForQuery(DatabaseUtils.java:842)
AndroidRuntime: at android.database.DatabaseUtils.longForQuery(DatabaseUtils.java:830)
AndroidRuntime: at android.database.sqlite.SQLiteDatabase.getVersion(SQLiteDatabase.java:940)
AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:311)
AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:262)
AndroidRuntime: at com.android.providers.contacts.LegacyApiSupport.(LegacyApiSupport.java:499)
AndroidRuntime: at com.android.providers.contacts.ContactsProvider2.initForDefaultLocale(ContactsProvider2.java:1668)
AndroidRuntime: at com.android.providers.contacts.ContactsProvider2.performBackgroundTask(ContactsProvider2.java:1759)
AndroidRuntime: at com.android.providers.contacts.ContactsProvider2$1.onPerformTask(ContactsProvider2.java:1615)
AndroidRuntime: at com.android.providers.contacts.ContactsTaskScheduler$MyHandler.handleMessage(ContactsTaskScheduler.java:77)
AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
AndroidRuntime: at android.os.Looper.loop(Looper.java:164)
AndroidRuntime: at android.os.HandlerThread.run(HandlerThread.java:65)
Ma supposition serait que - pour une raison quelconque - le fournisseur de contacts a été affecté à un ID d'utilisateur différent et a maintenant perdu l'accès à sa propre base de données. Je supposerais que si je nettoie la base de données, le problème disparaît.
Cependant, je ne veux pas perdre mes contacts. J'ai une sauvegarde mais elle est assez ancienne pour dire que j'en perdrais certains. Je suis convaincu que le fichier est toujours là et que je peux probablement l'ouvrir comme fichier sqlite une fois que j'ai accès, mais je n'ai aucune idée de comment y parvenir. Essayer de travailler avec le paquet com.android.providers.contacts
dans adb me laisse toujours avec "package not debuggable".
Mon téléphone est un Moto G5 Plus non rooté fonctionnant sous Android 8.1
Y a-t-il un moyen de sauvegarder mes contacts ou sont-ils perdus? Aussi: Puis-je peut-être simplement supprimer le fichier *.db-shm
qui semble être le problème ici? Autant que je me souvienne, c'est juste un fichier temporaire pour sqlite de toute façon.