2010-08-28 10 views
6

Sto cercando di trovare il database sqlite utilizzato da MediaStore. Per quanto ho capito, il MediaStore contiene tra gli altri le playlist definite nell'app Musica predefinita. In realtà vorrei duplicare una playlist, ma l'app non lo consente. In qualche modo ho pensato che potrei risolvere questo se riuscissi a trovare il vero file db. Ma ora sono completamente sviato, perché non riesco a trovare il db. A proposito, sto eseguendo FroYo.Android MediaStore sqlite db posizione

risposta

4

Il modo corretto per fare ciò è utilizzare content provider per interrogare media store e fare qualsiasi tipo di modifica alle tabelle da lì.

Un esempio rapido di come interrogare tutti gli artisti nel MediaStore.

String[] proj = { MediaStore.Audio.Media._ID, 
         MediaStore.Audio.Media.DATA, 
         MediaStore.Audio.Media.DISPLAY_NAME, 
         MediaStore.Audio.Artists.ARTIST }; 
      //managed query doesn't need startManagingCursor called on the cursor 
      Cursor c = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
         proj, null, null, null); 
+0

Giusto. Questo è il modo programmatico. Suppongo che in questo caso potrei semplicemente ottenere il codice del lettore musicale in primo luogo e aggiungere una funzione di playlist duplicata. Il mio punto, tuttavia, era che volevo fare un trucco rapido, modificando il database sqlite direttamente usando una GUI sqlite. Mi chiedo quale file contenga il db? – Hardy

+0

Ah, capisco, non hai detto che volevi usare una GUI sqlite per farlo. Bene finché hai un telefono rooted non dovresti avere problemi a tirare il DB. Vado a cercare nella sua posizione e torno da te. – smith324

+0

Hai trovato la posizione del db. Non riesco proprio a trovarlo :( – Hardy

11

Avere uno sguardo alla Android source the class we're interested in seems to be android.provider.MediaStore e in là, il metodo getDatabaseForUri() sembra generare un database diverso per ogni scheda di memoria esterna e uno chiamato internal.db.

Quindi penso che il file che ti interessa è:

/data/data/com.android.providers.media/databases/internal.db 

Tuttavia, la mia copia di quel database non hanno la tabella audio_playlists utilizzato nella sorgente Java, quindi non sono sicuro che questo è destra.

+0

Come si accede ai dati sotto/dati. Sto usando ASTRO per navigare i dati sul mio telefono , ma/i dati sono vuoti.Non sono sicuro se ciò sia dovuto al fatto che la directory è veramente vuota o a causa delle impostazioni dei permessi. – Hardy

+0

'/ data' è di proprietà di' root', quindi non sarai in grado di sfogliarlo con ASTRO su un telefono senza radici Provate a connettere il vostro telefono al PC di sviluppo e usando 'adb shell'. Penso che questo funzioni con permessi di root su tutti i telefoni, ma non ho un telefono wireless con me per verificarlo. –

+0

Grazie per le informazioni.Questo aiuta molto e spiega anche perché ho avuto così difficoltà a trovare questo file.Sfortunatamente, 'adb shell' non sembra funzionare come root su un telefono non-root :(Quanto può essere difficile !? – Hardy

3

la posizione è:

/data/data/com.android.providers.media/databases/internal.db 

audio_playlists non nelle tabelle, si può vedere in Visualizzazioni. Lo strumento sql è: sqliteman, ubuntu13.10

Problemi correlati