Have you ever installed a new rom, but completely forgot which notification sound you were using? I have a nandroid backup of the old rom, but really don't want to completely restore the rom just to figure out which sound I was using. Android stores this in a database, and I'll show you how to access that database. In hindsight, it may just be easier to restore the nandroid backup. But, this is how to do it using a nandroid backup.
I'll be using Ubuntu 12.04 to do this. I believe it can be done with Windows as well, though the commands and programs will differ. Again, this assumes that you
don't remember what the filename was. If you do, you can just skip to step 7.
1. Copy your nandroid backup files to your computer. Specifically, the "data.ext4.tar" and any "data.ext4.tar.a", "data.ext4.tar.b", etc. files.
2. The files need to be combined together. Use the command "cat data.ext4.tar data.ext4.tar.a data.ext4.tar.b > data-combined.tar" or similar for your filenames. It combines all of your data.ext4.tar files into one new file, data-combined.tar. This should give you a working tar file. I got this step from
http://forum.xda-developers.com/show....php?t=2194171.
3. Extract the data-combined tar file. If you're a super-cool linux hacker, you probably know some terminal command to do this, like tar -randomLettersHere (xzvf?). I just right clicked the tar file and selected "Extract Here".
4. Navigate to "./data/com.android.providers.settings/databases/settings.db" and open the file. I didn't have any program to read SQL databases, so I let Ubuntu installed the recommended one for me, called "Sqliteman".
5. Using the list on the left, go under Tables-System. You should see the contents of that table, which look like an excel spreadsheet. The row (or tuple) we're looking for has the field "name" equal to "ringtone" or "notification_sound", depending on which file you're trying to locate. You can scroll through the rows and look for those rows, or you can enter an SQL command in the top box and hit the green arrow to run it and filter just the ones we want. Try this-
Code:
select *
from system
where name='notification_sound' or name='ringtone';
This pulls up all the rows where "name" is
exactly equal to either of those strings. You can also search for anything that
contains those strings by using this syntax-
Code:
select *
from system
where name like '%notification%';
If you're looking for your ringtone, try a query that just
contains "ringtone", like this-
Code:
select *
from system
where name like '%ringtone%';
(That pulled up the actual file for me under the name "ringtone_CONSTANT_PATH")
If you're using a different rom than that I was (or a different device), you might need to tweak what you look for. Try changing the strings you search for. What we're looking for is for the entry where "value" equals something like "content://media/internal/audio/media/238". It might have the word 'internal' instead of 'external'. Note that number at the end, which is some kind of media ID number.
6. Now, open the SQL file "./data/data/com.android.providers.media/databases/external.db" or "./data/data/com.android.providers.media/databases/internal.db" depending on whether the value in step 5 had the word internal or external. Find the row where "_id" equals the number at the end of your "value" string in step 5. You can scroll through the "files" table, or enter a query like this-
Code:
select *
from files
where _id='238';
The field "_data" should show the path for your file. For me, it was "/system/media/audio/notifications/S_Dew_drops.ogg". Oh, how I love you, Touchwiz...
7. Now you know where the file is. If your new rom doesn't have that ringtone/notification sound any more, you can probably retrieve it from two places. First, check the rom installation zip file (probably the easiest way) if it was an included sound. Open the installation zip file, and look in the path you found in step 6. The second way is to go through your Nandroid backup. Follow steps 1-3, but copy, combine, and extract your system.ext4.tar file(s). Again, just look in the same path from step 6, and it should be there. These paths are typically "/system/media/audio/notifications/" and "/system/media/audio/ringtones".
Enjoy your old, familiar sound again!