我在市场上发布了一款应用。我得到一个评论,它不会在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:她看起来很好...... :)