市場にアプリを公開しました。SG3には乗らないとのコメントを頂きました。私の友人の一人は、それが彼女の電話に出ていないと私に言いました. 彼は SG1 (2.3.3) を持っているので、Galaxy 固有の問題かもしれません (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) で android.app.ActivityThread$H.handleMessage(ActivityThread.java) :935) android.os.Handler.dispatchMessage(Handler.java:99) で android.os.Looper.loop(Looper.java:123) で android.app.ActivityThread.main(ActivityThread.java:3687) で 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) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) at dalvik.system.NativeStart.main(Native Method) 原因: 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.database.sqlite.SQLiteOpenHelper の android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203) で。getWritableDatabase(SQLiteOpenHelper.java:118) com.b2creative.b2callstats.HotOrNot.open(HotOrNot.java:69) com.b2creative.b2callstats.Calllogs.refreshList(Calllogs.java:1579) com.b2creative.b2callstats.Calllogs .onCreate(Calllogs.java:277) で android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) で android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) ... 11 詳細
グーグルで調べていると、いくつかの同様のエラーが見つかりましたが、この問題の原因を突き止めることができず、私の電話や ZTE Blade と Samsung では表示されないため、テストが非常に困難です。我が家にあるgalaxy mini。
彼女の電話でデータベースのパスを確認したかったのですが、最初に強制終了するため、取得できませんでした。私の電話では、デフォルト パスは /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: 彼女はいいですね... :)