2013-05-21 7 views
6

के लिए संस्करण 58 से 55 तक डेटाबेस डाउनग्रेड नहीं कर सकता है, जब मैं एंड्रॉइड एसएमएस डेटाबेस को पढ़ने की कोशिश करता हूं तो मुझे अपने एंड्रॉइड एप्लिकेशन में यह क्रैश मिलता है। एंड्रॉयड एसएमएस डेटाबेस को पढ़ने के लिए कोड निम्नलिखित स्निपेट के समान है:android.database.sqlite.SQLiteException: एंड्रॉइड एसएमएस डेटाबेस

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

यह केवल जगह है जहाँ मेरे आवेदन एंड्रॉयड एसएमएस डाटाबेस के साथ सूचना का आदान प्रदान है। एसएमएस डेटाबेस के लिए डाउनग्रेड त्रुटि फेंक दी जा रही है।

मैं निम्न क्रैश मिलती है:

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% 20 डाउनग्रेड% 20 डाटाबेस% 20%% 20%% 2033% 20to% 2032% 20at% 20android.database.DatabaseUtils.readExceptionFromParcel% 28DatabaseUtils.java% 29] [1] हालांकि इस मामले में यह मेरे अपने डेटाबेस में से एक हो सकता है जहां यह इसके विपरीत है एंड्रॉइड एसएमएस डेटाबेस।

+0

वही कारण है? http://stackoverflow.com/questions/15018025/cant-downgrade-डेटा-from-version-2-to-1 –

उत्तर

2

मुझे पार्टी के लिए देर हो सकती है, लेकिन यहां मेरे 2 सेंट हैं।

प्रदाता जो आप उपयोग कर रहे हैं (डिवाइस का एसएमएस प्रदाता) उस डेटाबेस को पढ़ता है और लिखता है जिसे आप (तृतीय पक्ष ऐप के रूप में) तक पहुंच नहीं पाते हैं। यह आप दोनों के बीच एक माध्यम के रूप में काम करता है।

ऐसा लगता है कि इस अपवाद को प्राप्त करने वाले डिवाइस में इसका एसएमएस डेटाबेस अपडेट किया गया था (या अधिक सटीक डाउनग्रेड किया गया था)। यह या तो एंड्रॉइड वर्जन अपग्रेड (एक OEM द्वारा) या रूट पहुंच के दौरान लापरवाही से सामान बदलकर हो सकता है।

कभी-कभी, जब किसी डिवाइस को एंड्रॉइड ओएस अपडेट मिलता है, तो कुछ सामान गलत हो जाता है। या तो खराब स्थापना के कारण, या क्योंकि अद्यतन छोटी है। इस मामले में, किसी ने एसएमएस प्रदाता को खराब कर दिया।

नीचे की रेखा, आप (एक तृतीय भाग ऐप के रूप में) इसके बारे में कुछ भी नहीं कर सकते हैं, अपवाद के साथ अपने सभी एसएमएस प्रदाता प्रश्नों को अपवाद लपेटें)। एक ही प्रदाता का उपयोग करने वाले सभी ऐप्स को आपके जैसा ही समस्या का सामना करना चाहिए।

संबंधित मुद्दे