es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

java.lang.IllegalArgumentException: Columna no válida: _data

Mientras ejecuto este código, obtengo la excepción de columna no válida: _data.

 RingtoneManager.setActualDefaultRingtoneUri(
                context,
                RingtoneManager.TYPE_RINGTONE, Settings.System.DEFAULT_RINGTONE_URI)

Básicamente, quiero volver al tono de llamada predeterminado del sistema desde mi aplicación.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para volver al tono de llamada predeterminado del sistema desde una aplicación de Android, puedes usar las clases RingtoneManager y Settings.

    En el código proporcionado, se utiliza el método RingtoneManager.setActualDefaultRingtoneUri para establecer la URI del tono de llamada predeterminado actual. El primer parámetro contexto especifica el contexto de la aplicación.

    El segundo parámetro RingtoneManager.TYPE_RINGTONE se utiliza para especificar el tipo de tono de llamada. También puedes usar RingtoneManager.TYPE_ALARM o RingtoneManager.TYPE_NOTIFICATION según tus necesidades.

    El tercer parámetro Settings.System.DEFAULT_RINGTONE_URI especifica la URI del tono de llamada predeterminado a establecer.

    Sin embargo, al ejecutar este código, es posible que te encuentres con una IllegalArgumentException con el mensaje “invalid column _data”. Esto se debe a que el parámetro Settings.System.DEFAULT_RINGTONE_URI puede no estar disponible en todos los dispositivos Android.

    Para evitar este problema, puedes manejar la excepción utilizando un bloque try-catch y establecer la URI como nula en caso de excepción.

    Aquí tienes un ejemplo de código para volver al tono de llamada predeterminado del sistema:

    try {
        RingtoneManager.setActualDefaultRingtoneUri(
                contexto,
                RingtoneManager.TYPE_RINGTONE,
                Settings.System.DEFAULT_RINGTONE_URI);
    } catch (IllegalArgumentException e) {
        RingtoneManager.setActualDefaultRingtoneUri(
                contexto,
                RingtoneManager.TYPE_RINGTONE,
                null); // establecer en nulo en caso de excepción
    }
    

    Este código establece el tono de llamada predeterminado en el tono de llamada predeterminado del sistema utilizando el método RingtoneManager.setActualDefaultRingtoneUri() y maneja la excepción en caso de IllegalArgumentException.

Comments are closed.