2010-08-28 17 views
6

MediaStore tarafından kullanılan sqlite veritabanını bulmaya çalışıyorum. Anladığım kadarıyla MediaStore, diğerleri arasında varsayılan Müzik uygulamasında tanımlanan oynatma listelerini içerir. Aslında bir oynatma listesini çoğaltmak istiyorum, ancak uygulama buna izin vermiyor. Bir şekilde, gerçek db dosyasını bulabildiysem bunu çözebilirim diye düşündüm. Ama şimdi tamamen kapalı durumdayım, çünkü sadece db'yi bulamıyorum. Btw, FroYo'yu koşuyorum.Android MediaStore sqlite db konumu

cevap

4

Bunu yapmanın en uygun yolu media store sorgulamak ve oradan tablolara değişiklikler her türlü yapmak content provider kullanmaktır.

Eğer Mediastore tüm sanatçıları sorgulamak nasıl Hızlı bir örnek.

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

Sağ. Bu programatik bir yol. Sanırım bu durumda, ilk olarak Müzik çalar kodunu tutabilirim ve bir çalma listesi işlevi ekleyebilirim. Benim amacım, herhangi bir sqlite GUI kullanarak sqlite veritabanını doğrudan düzenleyerek hızlı bir hack yapmak istediğimdi. Sadece hangi dosyanın db içerdiğini merak ediyorum? – Hardy

+0

Ah Gördüğünüz gibi, bunu yapmak için bir sqlite GUI kullanmak istediğinizi söylemediniz. Köklü bir telefona sahip olduğunuz sürece, DB'yi çekmede sorun yaşamayacaksınız. Onun yerine bakıp sana döneceğim. – smith324

+0

db'nin yerini buldunuz mu? Gerçekten bulamıyorum :( – Hardy

11

Android source the class we're interested in seems to be android.provider.MediaStore de ve orada bir göz olması, getDatabaseForUri() yöntem internal.db adında farklı her harici depolama kartı için veritabanı ve bir tane oluşturmak görünüyor.

yüzden ilgilendiğiniz dosya olduğunu düşünüyorum:

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

Ancak, bu veritabanının kopyam Java kaynağında kullanılan audio_playlists tablo yok bu yüzden bu olduğunu emin değilim sağ.

+0

üzerinde nasıl veri/altındaki verilere erişmek yoktur. Telefonumda verileri göz atmak için ASTRO'yu kullanıyorum , ama/data boştur.Bunun, dizin boş olduğundan veya izin ayarları nedeniyle olduğundan emin değilim. – Hardy

+0

'/ data'' root''a aittir, böylece göz atmayacaksınızdır. bir köksüz telefonda astro ile. geliştirme telefonunuzu PC'ye bağlamak ve 'adb shell' kullanmayı deneyin. Bunu tüm telefonlarda kök izinleriyle çalışır düşünüyorum ama bu kontrol etmek benimle bir köksüz telefon yok. –

+0

için teşekkürler Bu çok yardımcı olur ve neden bu dosyayı bulmak için böyle zor bir zaman vardı açıklıyor.Ne yazık ki, 'adb kabuk' köklü olmayan bir telefon üzerinde kök gibi görünmüyor :( – Hardy

3

konumdur:

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

audio_playlists değil Tablo, bunu Görünümler'de görebilirsiniz. sql araçtır: sqliteman, ubuntu13.10