android.database.sqlite.SQLiteCantOpenDatabaseException: errore sconosciuto (codice 14): Imansible aprire database

Ho letto vari articoli in loco su questo argomento, ma non sono in grado di capirlo. Sto utilizzando il database di pre-build per questa applicazione. Sto usando la gelatina per questa applicazione.

AndroidManifest.xml

  • Pubblicazione della libreria Android (aar) a Bintray con i sapori scelti
  • I dispositivi ID disegnabili possono android memorizzare come un arrays integer?
  • google-services.json per diversi prodottiFlavors
  • Disegnare cerchio trasparente riempito fuori
  • Cambiare l'image in immagini utilizzando Threads
  • suggerimenti per le applicazioni Android debbugin
  • <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.quotes" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.quotes.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

    Uscita di Logcat

    secondo logcat è causato da SQLiteCantOpenDatabaseException

     06-10 23:07:01.831: E/Trace(4419): error opening trace file: No such file or directory (2) 06-10 23:07:03.611: E/SQLiteLog(4419): (14) cannot open file at line 30176 of [00bb9c9ce4] 06-10 23:07:03.621: E/SQLiteLog(4419): (14) os_unix.c:30176: (2) open(/data/data/com.example.quotes/databasesQuotesdb) - 06-10 23:07:03.641: E/SQLiteDatabase(4419): Failed to open database '/data/data/com.example.quotes/databasesQuotesdb'. 06-10 23:07:03.641: E/SQLiteDatabase(4419): android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:669) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at com.example.quotes.DataBaseHelper.checkDataBase(DataBaseHelper.java:94) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at com.example.quotes.DataBaseHelper.createDataBase(DataBaseHelper.java:58) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at com.example.quotes.MainActivity.onCreate(MainActivity.java:34) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.app.Activity.performCreate(Activity.java:5104) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.app.ActivityThread.access$600(ActivityThread.java:141) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.os.Handler.dispatchMessage(Handler.java:99) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.os.Looper.loop(Looper.java:137) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at android.app.ActivityThread.main(ActivityThread.java:5041) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at java.lang.reflect.Method.invokeNative(Native Method) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at java.lang.reflect.Method.invoke(Method.java:511) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 06-10 23:07:03.641: E/SQLiteDatabase(4419): at dalvik.system.NativeStart.main(Native Method) 06-10 23:07:03.731: E/SQLiteLog(4419): (14) cannot open file at line 30176 of [00bb9c9ce4] 06-10 23:07:03.731: E/SQLiteLog(4419): (14) os_unix.c:30176: (2) open(/data/data/com.example.quotes/databasesQuotesdb) - 06-10 23:07:03.781: E/SQLiteDatabase(4419): Failed to open database '/data/data/com.example.quotes/databasesQuotesdb'. 06-10 23:07:03.781: E/SQLiteDatabase(4419): android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:669) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at com.example.quotes.DataBaseHelper.openDataBase(DataBaseHelper.java:145) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at com.example.quotes.MainActivity.onCreate(MainActivity.java:44) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.app.Activity.performCreate(Activity.java:5104) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.app.ActivityThread.access$600(ActivityThread.java:141) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.os.Handler.dispatchMessage(Handler.java:99) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.os.Looper.loop(Looper.java:137) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at android.app.ActivityThread.main(ActivityThread.java:5041) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at java.lang.reflect.Method.invokeNative(Native Method) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at java.lang.reflect.Method.invoke(Method.java:511) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 06-10 23:07:03.781: E/SQLiteDatabase(4419): at dalvik.system.NativeStart.main(Native Method) 06-10 23:07:03.791: D/AndroidRuntime(4419): Shutting down VM 06-10 23:07:03.791: W/dalvikvm(4419): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 06-10 23:07:03.831: E/AndroidRuntime(4419): FATAL EXCEPTION: main 06-10 23:07:03.831: E/AndroidRuntime(4419): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.quotes/com.example.quotes.MainActivity}: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.app.ActivityThread.access$600(ActivityThread.java:141) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.os.Handler.dispatchMessage(Handler.java:99) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.os.Looper.loop(Looper.java:137) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.app.ActivityThread.main(ActivityThread.java:5041) 06-10 23:07:03.831: E/AndroidRuntime(4419): at java.lang.reflect.Method.invokeNative(Native Method) 06-10 23:07:03.831: E/AndroidRuntime(4419): at java.lang.reflect.Method.invoke(Method.java:511) 06-10 23:07:03.831: E/AndroidRuntime(4419): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 06-10 23:07:03.831: E/AndroidRuntime(4419): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 06-10 23:07:03.831: E/AndroidRuntime(4419): at dalvik.system.NativeStart.main(Native Method) 06-10 23:07:03.831: E/AndroidRuntime(4419): Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:804) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:789) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:669) 06-10 23:07:03.831: E/AndroidRuntime(4419): at com.example.quotes.DataBaseHelper.openDataBase(DataBaseHelper.java:145) 06-10 23:07:03.831: E/AndroidRuntime(4419): at com.example.quotes.MainActivity.onCreate(MainActivity.java:44) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.app.Activity.performCreate(Activity.java:5104) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 06-10 23:07:03.831: E/AndroidRuntime(4419): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 06-10 23:07:03.831: E/AndroidRuntime(4419): ... 11 more 06-10 23:07:04.083: D/dalvikvm(4419): GC_CONCURRENT freed 203K, 11% free 2676K/3000K, paused 25ms+18ms, total 306ms 06-10 23:07:07.811: I/Process(4419): Sending signal. PID: 4419 SIG: 9 

    DataBaseHelper.java

     public class DataBaseHelper extends SQLiteOpenHelper{ //The Android's default system path of your application database. private static String DB_PATH = "/data/data/com.example.quotes/databases"; private static String DB_NAME = "Quotesdb"; // Table Names of Data Base. static final String TABLE_Name = "Quotes"; // Contacts Table Columns names //private static final String _Id = "_Id"; //private static final String quotes = "quotes"; //private static final String author = "author"; private SQLiteDatabase myDataBase; private final Context myContext; /** * Constructor * Takes and keeps a reference of the passed context in order to access to the application assets and resources. * @param context */ public DataBaseHelper(Context context) { super(context, DB_NAME, null, 1); this.myContext = context; } /** * Creates a empty database on the system and rewrites it with your own database. * */ public void createDataBase() throws IOException{ boolean dbExist = checkDataBase(); SQLiteDatabase db_Read = null; if(dbExist){ //do nothing - database already exist }else{ //By calling this method and empty database will be created into the default system path //of your application so we are gonna be able to overwrite that database with our database. db_Read = this.getReadableDatabase(); db_Read.close(); try { copyDataBase(); } catch (IOException e) { //throw new Error("Error copying database"); e.toString(); } } } /** * Check if the database already exist to avoid re-copying the file each time you open the application. * @return true if it exists, false if it doesn't */ private boolean checkDataBase(){ SQLiteDatabase checkDB = null; try{ String myPath = DB_PATH + DB_NAME; checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); }catch(SQLiteException e){ //database does't exist yet. } if(checkDB != null){ checkDB.close(); } return checkDB != null ? true : false; } /** * Copies your database from your local assets-folder to the just created empty database in the * system folder, from where it can be accessed and handled. * This is done by transfering bytestream. * */ private void copyDataBase() throws IOException{ //Open your local db as the input stream InputStream myInput = myContext.getAssets().open(DB_NAME); // Path to the just created empty db String outFileName = DB_PATH + DB_NAME; //Open the empty db as the output stream OutputStream myOutput = new FileOutputStream(outFileName); //transfer bytes from the inputfile to the outputfile byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer))>0){ myOutput.write(buffer, 0, length); } //Close the streams myOutput.flush(); myOutput.close(); myInput.close(); } public void openDataBase() throws SQLException{ //Open the database String myPath = DB_PATH + DB_NAME; myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); } @Override public synchronized void close() { if(myDataBase != null) myDataBase.close(); super.close(); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } /*// Getting single contact public List<Quotes> getQuote(int id) { ArrayList<Quotes>(); getReadableDatabase(); Cursor cursor = db.query(TABLE_Name, new String[] { _Id, qotes,author }, _Id + "=?", new String[] { String.valueOf(id) }, null, null, null, null); //String query = "SELECT _Id, qotes, author From "+TABLE_Name; //String query = "SELECT * From Quotes"; //Cursor cursor = db.rawQuery(query, null); if (cursor != null) cursor.moveToFirst(); Quotes quotes = new Quotes(Integer.parseInt(cursor.getString(0)), cursor.getString(1),cursor.getString(2)); QuoteList.add(quotes); return QuoteList; } */ } 

  • Firma GoogleSignatureVerifier non valido (google play services 9.0.0)
  • come posso select e uccidere un'applicazione multipla?
  • Controllare se il database è stato creato in Android
  • Esecuzione di uno script di shell sul dispositivo Android usando adb
  • Aggiunta di immagini in listview dopo l'elenco dell'elenco di visualizzazione clic
  • Chiamare la barra degli strumenti su each attività
  • 13 Solutions collect form web for “android.database.sqlite.SQLiteCantOpenDatabaseException: errore sconosciuto (codice 14): Imansible aprire database”

    Aggiungi questa authorization al file AndroidManifest.xml del tuo progetto, nel tag manifest (che dovrebbe essere il tag di livello superiore).

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    Sostituire il codice checkDataBase () con il codice riportto di seguito:

     File dbFile = myContext.getDatabasePath(DB_NAME); return dbFile.exists(); 

    Puoi affrontare questo problema se stai eseguendo l'applicazione sulla versione Marshmallow di Android o versione successiva (livello API 23 o superiore), a causa del nuovo model di autorizzazioni in tempo reale introdotto in questo.

    A partire da Android 6.0 (livello API 23), gli utenti concedono autorizzazioni alle applicazioni durante l'esecuzione dell'applicazione, non quando si installa l'applicazione. Questo approccio semplifica il process di installazione dell'app, poiché l'utente non ha bisogno di concedere autorizzazioni quando installano o aggiornano l'applicazione.

    Per get autorizzazioni in fase di runtime, dovrai richiedere l'utente. Puoi farlo nel modo seguente.

    Prima richiesta di autorizzazioni.

     String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE}; requestPermissions(permissions, WRITE_REQUEST_CODE); 

    E poi puoi controllare i risultati

     @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case WRITE_REQUEST_CODE: if(grantResults[0] == PackageManager.PERMISSION_GRANTED){ //Permission granted. //Continue with writing files... } else{ //Permission denied. } break; } } 

    Qui è buona sorgente di apprendimento che richiede-runtime-permessi-in-android-marshmallow /

    Ciò può essere causato da cattive autorizzazioni o da SELinux. Assicurarsi che le autorizzazioni e il proprietario / gruppo siano impostate correttamente. Quindi eseguire questo:

     restorecon /data/data/your.app.folder/databases/your.db 

    restorecon ripristina il context di protezione predefinito SELinux di file

    Penso che sia perché il tuo DB_Path finisce senza un "/". Quando concatenate il path con il database, la variabile myPath ha la seguente string: "/data/data/com.example.quotes/databasesQuotesdb" .

    Propongo questi cambiamenti:

     private static String DB_PATH = "/data/data/com.example.quotes/databases/"; private static String DB_NAME = "Quotesdb.db"; 

    E altra cosa, aprire il database nell'attività principale e implementare rispettivamente i onPause() e onResume() con database.close() e database.open() . Questo è il mio esempio per l'attività principale (utilizzata con Cordova, web design e tutto il materiale = P):

     package home.shell.accessApp; import android.os.Bundle; import android.util.Log; import org.apache.cordova.*; public class AccessApp extends CordovaActivity { private SellitDAO db; //This is the class name for my SQLiteOpenHelper @Override public void onCreate(Bundle savedInstanceState) { db = new SellitDAO(this); db.open(); super.onCreate(savedInstanceState); super.init(); // Set by <content src="index.html" /> in config.xml super.loadUrl(Config.getStartUrl()); //super.loadUrl("file:///android_asset/www/index.html") } @Override public void onPause() { super.onPause(); db.close(); } @Override public void onResume() { super.onResume(); db.open(); } } 

    In bocca al lupo!!!

    Il DB_PATH stava indicando un database diverso. Modificalo nella class di helper del database e nel mio codice funziona.

     private static String DB_PATH = "/data/data/com.example.abc"; 

    Non credo che questo sia il tuo problema, ma mi sembra piuttosto male. Hai un livello duplicato di com.examples.quote nel tuo progetto. La tua sezione Attività nel tuo AndroidManifest.xml dovrebbe essere più simile a questa:

      <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

    Puoi anche avere le tue classi sotto src / com.example.quotes / com.example.quotes invece di solo in com.example.quotes.

    Non sono sicuro se questo sta causando il tuo problema. Ma sembra un po 'sconvolto. Tutta la tua altra cosa mi sembra piuttosto standard.

    @nmr anche controllare la properties; e gruppi sul file sqlite stesso … Avrei copiato il mio database da / sdcard come root quindi ho dovuto cambiare le autorizzazioni.

     -rw-rw---- root root 180224 2014-05-05 11:06 test.sqlite 

    dovrebbe essere..

     -rw-rw---- u0_a80 u0_a80 180224 2014-05-05 11:06 test.sqlite 

    Utilizza i seguenti comandi per impostare la properties; e il gruppo corretti. L' u0_a80 ho ottenuto da ls -al su altri file della directory

     chown u0_a80 test.sqlite chgrp u0_a80 test.sqlite 

    Il mio gremlin per questo problema era delle autorizzazioni di directory non valide:

    Buone autorizzazioni:

     drwxr-x--x u0_a20 u0_a20 2013-11-13 20:45 com.google.earth drwxr-x--x u0_a63 u0_a63 2013-11-13 20:46 com.nuance.xt9.input drwxr-x--x u0_a53 u0_a53 2013-11-13 20:45 com.tf.thinkdroid.sg drwxr-x--x u0_a68 u0_a68 2013-12-24 15:03 eu.chainfire.supersu drwxr-x--x u0_a59 u0_a59 2013-11-13 20:45 jp.co.omronsoft.iwnnime.ml drwxr-x--x u0_a60 u0_a60 2013-11-13 20:45 jp.co.omronsoft.iwnnime.ml.kbd.white drwxr-x--x u0_a69 u0_a69 2013-12-24 15:03 org.mozilla.firefox 

    Autorizzazioni non valide:

     root@grouper:/data/data # ls -lad com.mypackage drw-rw-r-- u0_a70 u0_a70 2014-01-11 14:18 com.mypackage 

    Come hanno fatto così? Li ho messi in questo modo, mentre sono impegnati a cercare di get l' adb pull a lavorare. Chiaramente ho sbagliato.

    Hey Google, sarebbe stato bello se un errore di authorization produsse un messaggio di errore significativo, o se non fosse successo se non wheressi usare le autorizzazioni di tweak per utilizzare gli strumenti.

    Aggiungere prima di OpenDatabase queste righe:

     File outFile = new File(Environment.getDataDirectory(), outFileName); outFile.setWritable(true); SQLiteDatabase.openDatabase(outFile.getAbsolutePath(), null, SQLiteDatabase.OPEN_READWRITE); 

    Come indicato da @CommonsWare, si desidera provare l' assistente di asset di sqlite di android . Ha fatto aprire un db pre-esistente un pezzo di torta per me.

    Ho letteralmente funzionato in circa mezz'ora dopo aver trascorso 3 ore cercando di farlo tutto manualmente. La cosa divertente è che pensassi di fare la stessa cosa che la biblioteca ha fatto per me, ma manca qualcosa!

    Eliminare i dati applicativi mi ha aiutato in questo. Può aiutarti ..

    Assicurarsi di non aprire e chiudere il database ripetutamente dal thread principale o dal thread di background.

    Crea una class singola nell'applicazione e cerca di creare e aprire i dati solo da questa class.

    È garanzia che la chiamata aperta del database viene fatta solo quando non esiste.

    Nell'intera applicazione utilizzare lo stesso approccio di get l'object sqLiteDatabase quando è richiesto.

    Ho usato sotto il codice e il mio problema è risolto ora dopo 1,5 giorni.

     ............................................................... 

    Nella class Activity onCreate () metodo

     public class MainActivity extends AppCompatActivity { private AssetsDatabaseHelper helper; @Override protected void onCreate(Bundle savedInstanceState) { helper = AssetsDatabaseHelper.getInstance(this); sqLiteDatabase = helper.getDatabase(); } } public class AssetsDatabaseHelper { Context context; SQLiteDatabase sqLiteDatabase; DatabaseHelper databaseHelper; private static AssetsDatabaseHelper instance; private AssetsDatabaseHelper(Context context){ this.context = context; databaseHelper = new DatabaseHelper(context); if(databaseHelper.checkDatabase()){ try{ databaseHelper.openDatabase(); }catch(SQLException sqle){ Log.e("Exception in opening ", " :: database :: sqle.getCause() : "+sqle.getCause()); } }else{ try{ databaseHelper.createDatabase(); }catch(IOException ioe){ Log.d("Exception in creating ", " :: database :: ioe.getCause() : "+ioe.getCause()); } try{ databaseHelper.openDatabase(); }catch(SQLException sqle){ Log.e("Exception in opening ", " :: database :: "+sqle.getCause()); } } sqLiteDatabase = databaseHelper.getSqLiteDatabase(); } public static AssetsDatabaseHelper getInstance(Context context){ if(instance != null){ return instance; }else { instance = new AssetsDatabaseHelper(context); return instance; } } public SQLiteDatabase getDatabase(){ return sqLiteDatabase; } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.