2012-06-15 8 views
2

Мы разработали приложение для платформы Android с предустановленной базой данных SQLite. Используя SQLiteOpenHelper, в первом выполнении приложения мы копируем базу данных из «Активы» для каталога данных приложения (/ data/data/br.com.lwu/databases/appdatabase.sqlite). Это работает, на большинстве устройств. Но у нас возникают проблемы с LG мобильных телефонов ниже:Мобильные телефоны LG не могут получить доступ к базам данных SqLite

  • LG Optimus One
  • LG-P500
  • LG-P500h

По-видимому, база данных копируется правильно. Но приложение не может получить доступ к базе данных (такая таблица). Нам нужна помощь!

// Copy Database: 

    private static String DB_PATH = "/data/data/br.com.lwu/databases/"; 
    private static String DB_NAME = "appdatabase.sqlite"; 


private void copyDataBase() throws IOException{ 
     InputStream myInput = myContext.getAssets().open(DB_NAME); 

     String outFileName = DB_PATH + DB_NAME; 
     OutputStream myOutput = new FileOutputStream(outFileName); 
     byte[] buffer = new byte[1024]; 
     int length; 
     while ((length = myInput.read(buffer))>0){ 
      myOutput.write(buffer, 0, length); 
     } 

     myOutput.flush(); 
     myOutput.close(); 
     myInput.close(); 

    } 


public void openDataBase() throws SQLException{ 
     String myPath = DB_PATH + DB_NAME; 

     if (myDataBase == null) { 
      myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); 
     } 

    } 

@Override 
    public synchronized void close() { 

     super.close(); 

     if (myDataBase != null) 
      if (myDataBase.isOpen()) { 
       myDataBase.close(); 
       myDataBase = null; 

      } 

    }  
+0

показать нам код, как вы получаете доступ к базе данных после копирования? – waqaslam

+0

Это код ... –

+2

Относительно проблемы или нет, вам не следует принимать частный путь хранения, но получить его из соответствующего API. –

ответ

0

Try изменения:

myDataBase = SQLiteDatabase.openDatabase(myPath, null, 
      SQLiteDatabase.OPEN_READWRITE); 

Для этого:

myDataBase = SQLiteDatabase.openDatabase(myPath, null, 
      SQLiteDatabase.OPEN_READWRITE | SQLiteDatabase.NO_LOCALIZED_COLLATORS); 

Это не потребует от вас, чтобы иметь обязательный стол android_metadata требует андроида VM в случае, если его не хватает в вашей базы данных.

 Смежные вопросы

  • Нет связанных вопросов^_^