Sqlite OpenHelper在Android2.3中工作正常,但在Android4中不工作

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

我有一个在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";
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 ;
    }