2013-05-21 11 views
6

Dostaję tę awarię w mojej aplikacji Android, gdy próbuje odczytać bazę danych systemu Android sms. Kod do odczytu bazy danych android SMS jest podobny do następującego fragmentu:android.database.sqlite.SQLiteException: Nie można obniżyć wersji bazy danych z wersji 58 na 55 dla bazy danych systemu Android sms

String SMS_URI = "content://sms/"; Uri uri = Uri.parse(SMS_URI); Cursor cursor = myContext.getContentResolver().query(uri, null, null, null, null);

Jest to jedyne miejsce, gdzie moja aplikacja współpracuje z android bazy SMS. W bazie danych sms zostanie zgłoszony błąd obniżenia wersji.

otrzymuję następujący katastrofę:

java.lang.RuntimeException: android.database.sqlite.SQLiteException: Can't downgrade database from version 58 to 55 
at to.talk.utils.ExceptionThrowingFutureTask$1.run(ExceptionThrowingFutureTask.java:32) 
at java.lang.Thread.run(Thread.java:856) Caused by: java.util.concurrent.ExecutionException: android.database.sqlite.SQLiteException: Can't downgrade database from version 58 to 55 
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:223) 
at java.util.concurrent.FutureTask.get(FutureTask.java:82) 
at to.talk.utils.ExceptionThrowingFutureTask.done(ExceptionThrowingFutureTask.java:22) 
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:150) 
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:264) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
... 1 more Caused by: android.database.sqlite.SQLiteException: Can't downgrade database from version 58 to 55 
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:184) 
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140) 
at android.content.ContentProviderProxy.query(ContentProviderNative.java:366) 
at android.content.ContentResolver.query(ContentResolver.java:372) 
at android.content.ContentResolver.query(ContentResolver.java:315) 
at to.talk.app.features.growth.SMSReader.readSmsAndGetInviteList(SMSReader.java:39) 

Aplikacja działa dobrze przez większość czasu i nie wywala mi lokalnie, jednak wywala to dla niektórych użytkowników. W urządzeniach \ środowiskach, w których się psuje, nie ma zauważalnych wzorców. Byłbym bardzo wdzięczny, gdyby ktoś mógł mi pomóc tutaj.

znalazłem podobną katastrofę tutaj:

[https://crash-stats.mozilla.com/report/list?signature=android.database.sqlite.SQLiteException%3A%20Can%27%27t% 20downgrade% 20database% 20from% 20version% 2033% 20to% 2032% 20at% 20android.database.DatabaseUtils.readExceptionFromParcel% 28DatabaseUtils.java% 29] [1] Chociaż w tym przypadku może to być jedna z ich własnych baz danych, w przeciwieństwie do mojej, gdzie baza danych sms na Androida.

+0

Czy to ten sam powód? http://stackoverflow.com/questions/15018025/cant-downgrade-database-from-version-2-to-1 –

Odpowiedz

2

Mogę spóźnić się na imprezę, ale oto moje 2 centy.

Dostawca, którego używasz (dostawca SMS urządzenia) czyta i zapisuje w bazie danych, do której użytkownik (jako aplikacja zewnętrzna) nie ma dostępu. Działa jako medium między wami dwoma.

Wygląda na to, że urządzenie, które otrzymało ten wyjątek, zaktualizowało swoją bazę danych SMS (lub, aby być bardziej precyzyjnym, obniżone). Może się to zdarzyć przez uaktualnienie wersji Androida (przez producenta OEM) lub niedbale zmieniając elementy, mając jednocześnie dostęp do roota.

Czasami, gdy urządzenie otrzymuje aktualizację systemu operacyjnego Android, niektóre rzeczy się nie udają. Albo z powodu złej instalacji, albo dlatego, że aktualizacja jest błędna. W tym przypadku ktoś wkręcił dostawcę sms.

Podsumowując, ty (jako aplikacja 3-częściowa) nic nie możesz z tym zrobić, wyjątek zawija wszystkie zapytania dostawcy SMS za pomocą próbnych połowów). Wszystkie aplikacje korzystające z tego samego dostawcy powinny napotkać dokładnie ten sam problem, co Ty.

Powiązane problemy