SQLiteException:某些手机无法打开数据库文件

时间:2012-08-20 19:07:18

标签: android sqlite

我在市场上发布了一款应用。我得到一个评论,它不会在SG3上发布。我的一个朋友告诉我,这不是她的手机。他有SG1(2.3.3),所以也许它是一个星系特定的问题(它适用于Galaxy S)。她发给我堆栈跟踪:

  

java.lang.RuntimeException:无法启动活动   ComponentInfo {com.b2creative.b2callstats / com.b2creative.b2callstats.Calllogs}:   android.database.sqlite.SQLiteException:无法打开数据库文件   在   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)   在   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)   在android.app.ActivityThread.access $ 1500(ActivityThread.java:117)at   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:935)at   android.os.Handler.dispatchMessage(Handler.java:99)at   android.os.Looper.loop(Looper.java:123)at   android.app.ActivityThread.main(ActivityThread.java:3687)at   java.lang.reflect.Method.invokeNative(Native Method)at   java.lang.reflect.Method.invoke(Method.java:507)at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:842)   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)at   dalvik.system.NativeStart.main(Native方法)引起:   android.database.sqlite.SQLiteException:无法打开数据库文件   在android.database.sqlite.SQLiteDatabase.dbopen(Native Method)中   android.database.sqlite.SQLiteDatabase。(SQLiteDatabase.java:1849)   在   android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)   在   android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)   在   android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:847)   在android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:630)   在   android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)   在   android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)   在com.b2creative.b2callstats.HotOrNot.open(HotOrNot.java:69)at   com.b2creative.b2callstats.Calllogs.refreshList(Calllogs.java:1579)at at   com.b2creative.b2callstats.Calllogs.onCreate(Calllogs.java:277)at at   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)   在   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)   ......还有11个

谷歌搜索时,我发现了几个类似的错误,但是我找不到导致这个问题的原因,而且很难测试,因为它不会出现在我的手机或ZTE Blade上和我家里的三星Galaxy迷你吧。

我想检查她手机上的数据库路径,但由于它在开始时强制关闭,我无法得到它。在我的手机上它是默认路径:/data/data/com.b2creative.b2callstats/databases/CallDatabase。

也许手机上没有这样的路径?

我的sqliteopenhelper类的一部分:

private static class DbHelper extends SQLiteOpenHelper {
        public DbHelper(Context context) {
        super (context, DATABASE_NAME, null, DATABASE_VERSION);

        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + 
              KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
              KEY_NAME + " VARCHAR(200) NOT NULL, " +
              KEY_PHONE + " VARCHAR(70) NOT NULL, " +
              KEY_TYPE + " CHAR(1) NOT NULL, " +
              KEY_DURATION + " VARCHAR(70) NOT NULL, " +
              KEY_DATE + " VARCHAR (20) NOT NULL, " +
              KEY_CONTACTID + " VARCHAR (50) NOT NULL)"
              );
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
            onCreate(db);
        }
    }

    public HotOrNot(Context c){
        ourContext = c;
        }

    public HotOrNot open() throws SQLException{ 
        ourHelper = new DbHelper(ourContext);
        ourDatabase = ourHelper.getWritableDatabase();    //error line 08.19.2012 6:32:57 PM
        return this;
        }

    public void close(){
        ourHelper.close();
        }
PS:她看起来很好...... :)

0 个答案:

没有答案