Application crashes on installation with error sqlite3_exec - Failed to set synchronous mode = 1(Normal)

我们两清 提交于 2019-11-26 22:12:22

问题


I'm running my application on Samsung Note with android version 4.0.4.

It's not crashing on devices like Samsung POP which is running android 2.2. And on Motorola Xoom running Androi 3.1.

When I'm installing my application It shows black screen then after some time shows popup that application is stop, and my application splash screen loading behind this dialog when I press ok that dialog disappears and I can go to my Application login screen.

12-13 18:33:53.823: I/ActivityThread(14608): Pub com.android.mypype.urbanairship.provider: com.urbanairship.UrbanAirshipProvider
12-13 18:33:53.833: I/Inside MyPype(14608):  Application Class
12-13 18:33:54.423: D/myPype - UALib(14608): Airship Take Off! Lib Version: 2.0.1 / App key = xsXcmKOoRe6gog9onrQHjA
12-13 18:33:54.423: D/myPype - UALib(14608): In Production? false
12-13 18:33:54.713: D/myPype - UALib(14608): Initializing Push.
12-13 18:33:54.718: D/myPype - UALib(14608): Initializing Analytics.
12-13 18:33:54.938: I/SqliteDatabaseCpp(14608): sqlite returned: error code = 5, msg = database is locked, db=xxx

    12-12 11:57:09.553: E/SqliteDatabaseCpp(3608): sqlite3_exec - Failed to set synchronous mode = 1(Normal) 
    12-12 11:57:09.553: E/SQLiteDatabase(3608): Failed to open the database. closing it.
    12-12 11:57:09.553: E/SQLiteDatabase(3608): android.database.sqlite.SQLiteDatabaseLockedException: database is locked
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1132)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1083)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1170)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:844)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:228)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at com.urbanairship.analytics.EventDataManager.<init>(Unknown Source)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at com.urbanairship.analytics.Analytics.<init>(Unknown Source)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at com.urbanairship.UAirship.takeOff(Unknown Source)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at com.android.mypype.MypypeApplication.onCreate(MypypeApplication.java:133)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:972)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3965)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.app.ActivityThread.access$1300(ActivityThread.java:127)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.os.Handler.dispatchMessage(Handler.java:99)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.os.Looper.loop(Looper.java:137)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at android.app.ActivityThread.main(ActivityThread.java:4511)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at java.lang.reflect.Method.invokeNative(Native Method)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at java.lang.reflect.Method.invoke(Method.java:511)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
    12-12 11:57:09.553: E/SQLiteDatabase(3608):     at dalvik.system.NativeStart.main(Native Method)
    12-12 11:57:09.553: E/myPype - UALib(3608): Unable to open Analytics Event DB


    12-12 11:57:37.958: E/myPype - UALib(3608): Unable to get DB size. Database not open.
    12-12 11:57:37.963: E/myPype - UALib(3608): Unable to insert event. Database not open.

In above error why It's pointing to Application class Urbanairship.takeOff() method.

I am searching for this issue but doesn't get anything yet. I am not able to figure it out. I tried synchronizing Locks on database operation in openHelper calss.

any help will be appreciated.

In my Application class I added below code to for Urbanairship.

  @Override
public void onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();
// This can be done in code as illustrated here,
        // or you can add these settings to a properties file
        // called airshipconfig.properties
        // and place it in your "assets" folder
        AirshipConfigOptions options = AirshipConfigOptions
                .loadDefaultOptions(this);

         // Take off initializes the services


        UAirship.takeOff(this, options);

        PushManager.enablePush();
}

回答1:


I figure it out but not the solution it's just a fix. I just handle the exception so app can't get crash.

How sad no one went through this actually it's for higher versions such as 4.0.4. So, I got one thing that it may be Urbairships new lib. fault because it's trying to write database (i read some events or something).

I don't understand how to solve so I handled this exception.

So, solution is you have to write your code under try-catch block and specify exception for handling in catch.



来源:https://stackoverflow.com/questions/13859840/application-crashes-on-installation-with-error-sqlite3-exec-failed-to-set-sync

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!