Sqlite OpenHelper在Android2.3中工作正常,但在Android4中不工作
我有一个在sdcard中使用数据库的代码,它在Android 2.3设备中工作正常,但在Android 4设备中不工作,在Android 2.3中,在sdcard上的路径上创建和/或打开数据库,在Android 4中,在手机应用程序的默认datadir中创建或打开数据库。下面的代码Sqlite OpenHelper在Android2.3中工作正常,但在Android4中不工作,android,sqlite,Android,Sqlite,我有一个在sdcard中使用数据库的代码,它在Android 2.3设备中工作正常,但在Android 4设备中不工作,在Android 2.3中,在sdcard上的路径上创建和/或打开数据库,在Android 4中,在手机应用程序的默认datadir中创建或打开数据库。下面的代码 public class dBeeHelper extends SQLiteOpenHelper { public final static String DATABASE_NAME = "data.db"; pri
public class dBeeHelper extends SQLiteOpenHelper {
public final static String DATABASE_NAME = "data.db";
private final static int DATABASE_VERSION = 59;
public static final String DATABASE_FILE_PATH = Environment.getExternalStorageDirectory().toString();
public static tables db = new tables();
private Context mcontext;
public dBeeHelper(Context context) {
super(new ContextWrapper(context) {
public SQLiteDatabase openOrCreateDatabase(String name,
int mode, SQLiteDatabase.CursorFactory factory) {
// allow database directory to be specified
File dir = new File(DATABASE_FILE_PATH + "/Manager/");
if(!dir.exists()) {
dir.mkdirs();
}
Manager manager = ((Manager)getApplicationContext());
if (dir.canWrite()){
manager.setDbLocation(dataFiles.Location.SdCard);
}else{
manager.setDbLocation(dataFiles.Location.Phone);
}
return SQLiteDatabase.openDatabase( DATABASE_FILE_PATH + "/Manager/" + DATABASE_NAME, null,
SQLiteDatabase.NO_LOCALIZED_COLLATORS | SQLiteDatabase.CREATE_IF_NECESSARY);
}
}, DATABASE_NAME, null, DATABASE_VERSION);
this.mcontext = context;
}
当我调试应用程序时,在Android2.3中启动openOrCreateDatabase,在Android4中不启动
谢谢 问题解决了!我更换了控制器,它也在安卓4中工作。 下面的代码已更改
private static Manager manager;
public dBeeHelper(Context context) {
super(context, getpath(context) + DATABASE_NAME, null, DATABASE_VERSION);
this.mcontext = context;
}
public static String getpath(Context context){
manager = (Manager) new ContextWrapper(context).getApplicationContext();
String path = Environment.getExternalStorageDirectory() + "/" + "Manager";
File dir = new File(path);
if(!dir.exists()) {
if (dir.canWrite()){
dir.mkdirs();
}else{
manager.setDbLocation(dataFiles.Location.Phone);
return "";
}
}
manager.setDbLocation(dataFiles.Location.SdCard);
path = path + "/";
return path ;
}