簡體   English   中英

android.database.sqlite.SQLiteException:無法將Android sms數據庫的數據庫從版本58降級到55

[英]android.database.sqlite.SQLiteException: Can't downgrade database from version 58 to 55 for android sms database

當我嘗試讀取android sms數據庫時,在我的android應用程序中出現此崩潰。 讀取android sms數據庫的代碼與以下代碼段相似:

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

這是我的應用程序與android sms數據庫進行交互的唯一位置。 正在向sms數據庫拋出降級錯誤。

我遇到以下崩潰:

 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)

該應用程序大多數時候都可以正常運行,並且不會在本地對我造成崩潰,但是對於某些用戶而言,它卻崩潰了。 在崩潰的設備\\環境中沒有明顯的模式。 如果有人可以在這里幫助我,我將不勝感激。

我在這里發現了類似的崩潰:

[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]盡管在這種情況下,它可能是自己的數據庫之一,與我的android sms數據庫不同。

我參加聚會的時間可能很晚,但這是我的2美分。

您正在使用的提供程序(設備的sms提供程序)讀取和寫入您(作為第三方應用程序)無權訪問的數據庫。 它作為你們兩個之間的媒介。

看起來出現此異常的設備的sms數據庫已更新(或更准確地說是降級)。 這可以通過Android版本升級(由OEM)或在具有root用戶訪問權限時不小心更改內容來實現。

有時,當設備獲得Android OS更新時,某些地方會出錯。 原因可能是安裝不正確,也可能是因為更新存在錯誤。 在這種情況下,有人將短信提供商搞砸了。

最重要的是,您(作為第三部分應用程序)對此無能為力,只不過用try-catches封裝了所有的sms提供程序查詢)。 使用相同提供程序的所有應用程序都應面臨與您完全相同的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM