2013-05-21 35 views
6

我在android应用程序中尝试读取android sms数据库时发生此故障。读了Android SMS数据库代码类似于下面的代码片段:android.database.sqlite.SQLiteException:无法将数据库从58版降级到55版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短信数据库。

+0

原因是否一样? http://stackoverflow.com/questions/15018025/cant-downgrade-database-from-version-2-to-1 –

回答

2

我可能会迟到派对,但这里是我的2美分。

您正在使用的提供程序(设备的短信提供程序)读取和写入数据库,您(作为第三方应用程序)无法访问它。它作为你们两个人之间的媒介。

它看起来像得到这个异常的设备有其sms数据库更新(或更准确地降级)。这可以通过Android版本升级(通过OEM)或在root用户访问时不小心更改内容来实现。

有时,当设备获得Android操作系统更新时,有些东西出问题了。要么是因为安装不正确,要么是因为更新有问题。在这种情况下,有人搞砸了短信提供商。底线,你(作为第三方应用程序)无能为力,异常包装所有的短信提供商查询与尝试捕获)。所有使用相同提供程序的应用程序都应该面临与您完全相同的问题。

相关问题