SQLiteAssetHelper – problemi su specifici telefoni, ad esempio OnePlus

Sto riscontrando un incidente su alcuni dispositivi quando utilizzo SQLiteAssetHelper nella mia applicazione, soprattutto su dispositivi OnePlus. Ora ho letto che ha a che fare con la directory che il database è memorizzato.

Ora sto cercando di trovare una soluzione alternativa, il meglio che ho potuto get è attualmente un constructor come questo

  • Layout delle tabs Android di scorrimento di Google
  • Qualsiasi soluzione per salvare un intento nelle impostazioni?
  • countview count vs contatore adatta in android
  • Perché il PendingIntent non invia la mia configuration personalizzata di Extras per l'intento?
  • Utilizzo di Google Play Services LocationClient nel servizio di background
  • Qual è la relazione tra Looper, Handler e MessageQueue in Android?
  • public MySubclass(Context context) { super(context, databaseName, context.getFilesDir() + "/databases", null, databaseVersion); 

    È questo il modo corretto di farlo o ci sono altri problemi con questo approccio?

    EDIT

    L'exception è

     Fatal Exception: android.database.sqlite.SQLiteException: Can't upgrade read-only database from version x to y: /data/data/my.package.id/databases/database.db 

    Spiacenti, ho collegato la sbagliata SO-question: questo è quello giusto . Ci dice che "OnePlus è in grado di copiare il database in /data/data/package-name/databases/filename.db, ma non consente di accedere a tali dati e non ho alcun indizio in merito."

  • Imansible risolvere com.google.android.gcm.GCMBaseIntentService; Studio di Android
  • android: webview all'interno di dialogo o popup
  • Ottenere il nome di un Android APK utilizzando C ++ e la class NativeActivity
  • Android Condividi via Testo Intent non mostrato in Facebook
  • Android AlarmManager in un Broadcastreceiver
  • Layout complesso Android lineare e relativo
  • 2 Solutions collect form web for “SQLiteAssetHelper – problemi su specifici telefoni, ad esempio OnePlus”

    Il constructor di SQLiteAssetHelper consente di specificare il proprio path di destinazione del database (la cartella deve essere scrivibile). Se non si specifica che lo utilizzi per impostazione predefinita. Vedi questo estratto dal repo di Github:

      if (storageDirectory != null) { mDatabasePath = storageDirectory; } else { mDatabasePath = context.getApplicationInfo().dataDir + "/databases"; } 
     Hey you can copy database from one to another from below mentioned code. public class MySQLiteHelper extends SQLiteOpenHelper implements DBConstants { private static MySQLiteHelper mInstance = null; private SQLiteDatabase myDataBase; private static String DB_PATH = ""; public MySQLiteHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); try { if (checkDataBase()) openDataBase(); else myDataBase = this.getReadableDatabase(); } catch (Exception e) { } } public static MySQLiteHelper instance(Context context) { File outFile = context.getDatabasePath(DATABASE_NAME); DB_PATH = outFile.getPath(); if (mInstance == null) { mInstance = new MySQLiteHelper(context); } return mInstance; } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.