Android: Save android.net.Uri object to Database

2019-06-16 04:41发布

问题:

What i m trying to do is get the selected ringtone from the user, set an AlarmManager alarm to play that ringtone when the alarm goes Off. but I need to save the ringtone in the database so I can reset all the alarms after phone reboot.

my question is what is the best way to save the ringtone Uri to the database to retrieve later?

I tried the followings:

1) save the ringtone title in the DB and then retrieve it and append it to a default ringtone path. but the issue, is that the ringtone might be loaded from a different location 2) Storing the uri scheme, scheme spefici part and fragment and then call Uri.fromParts to create the Uri. 3) create an inputStream, byte[] array from the Uri and saving it as a blob and then reading it back and cast the result to Uri

none of these works.

Your help is much appreciated.

回答1:

Store the URI as a string in the database and then load it later.

// This will get the uri in a string format
String s = mUri.toString();

When you retrieve the string from the database, rebuild the URI like this:

// This will decode the string into a URI
Uri mUri = Uri.parse(s);

Hope that helps. Good luck!