2011-06-19 14 views
9

Lo que estoy tratando de hacer es obtener el tono de llamada seleccionado del usuario, configurar una alarma AlarmManager para reproducir ese tono de llamada cuando la alarma se apaga. pero necesito guardar el tono de llamada en la base de datos para poder restablecer todas las alarmas después de reiniciar el teléfono.Android: guarde el objeto android.net.Uri en la base de datos

mi pregunta es ¿cuál es la mejor manera de guardar el tono de llamada Uri en la base de datos para recuperarlo más tarde?

Me trataron los siguientes:

1) Salvar el título de tono en el PP y luego recuperarlo y lo añaden a una ruta de tono de llamada predeterminado. pero el problema es que el tono de llamada podría cargarse desde una ubicación diferente 2) Almacenar el esquema uri, el esquema, la parte específica y el fragmento y luego llamar a Uri.fromParts para crear el Uri. 3) crear un inputStream, byte [] array desde el Uri y guardarlo como un blob y luego leerlo de nuevo y lanzar el resultado a Uri

Ninguno de estos funciona.

Su ayuda es muy apreciada.

Respuesta

14

Almacene el URI como una cadena en la base de datos y luego cárguelo más tarde.

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

Al recuperar la cadena desde la base de datos, reconstruir el URI de la siguiente manera:

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

Espero que ayude. ¡Buena suerte!

+0

Gracias por su respuesta. Uri.decode devuelve un String no un Uri. Usé uri.parse (s) y me devolvió un Uri pero no es el mismo que el original (mucha información y campos faltantes). así que MediaPlayer no juega correctamente y se rompe en la preparación. – Sammy

+1

intente utilizar uri.toString() para obtener el uri en formato de cadena –

+1

Gracias aString funcionó. – Sammy

Cuestiones relacionadas