Cómo configurar el tono de llamada con RingtoneManager.ACTION_RINGTONE_PICKER?

Intento encontrar una solución aquí, pero solo hay solución para el archivo propio / seleccionado, no para el código cuando llamo al selector. Uso el siguiente código cuando el usuario presiona el botón:

Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select ringtone for notifications:"); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_NOTIFICATION); ActivityCurrent.this.startActivityForResult(intent,999); 

Este selector de tono de llamada de la demostración, el usuario puede elegir qué tono de llamada quiere, pero echo de menos dos cosas: – no muestra el tono de llamada actual cuando se abre – no guarda el tono de llamada cuando se hace clic en Aceptar


Todavía no encuentro la manera de abrir RINGTONE_PICKER con el tono de timbre actual ya seleccionado. ¿Alguna idea?

 Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select ringtone for notifications:"); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_NOTIFICATION); ActivityCurrent.this.startActivityForResult(intent,999); 

Debe implementar onActivityResult() para recibir el resultado de la selección del usuario, luego guárdelo.

 if (resultCode == RESULT_OK) { Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); if (uri != null) { String ringTonePath = uri.toString(); } 

Aquí un ejemplo: http://www.ceveni.com/2009/07/ringtone-picker-in-android-with-intent.html

EDITAR: actualizar

 RingtoneManager.setActualDefaultRingtoneUri( myActivity, RingtoneManager.TYPE_RINGTONE, uri); 

Debes llamar esto 🙂

 Intent intent=new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, ringtone); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, ringtone); startActivityForResult(intent , 1); 

“tono de llamada” es el uri en el que estoy guardando el tono elegido en onActivityResult() .

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { switch (requestCode) { case 1: ringtone = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); // Toast.makeText(getBaseContext(),RingtoneManager.URI_COLUMN_INDEX, // Toast.LENGTH_SHORT).show(); break; default: break; } } } 

Espero que te ayude Hit respondió si lo hace.

El código es perfecto y funciona para mí. Pero olvidaste mencionar los permisos necesarios … aquí está. prueba este código … espero que ayude

    

Este código mostrará el tono de llamada predeterminado que el usuario establece antes cuando se utiliza el selector de tono de llamada.

Use el código a continuación en el botón para la intención de tono de llamada.

 public void pickRingtone(View view) { // TODO Auto-generated method. stub Intent intent = new. Intent(RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Ringtone"); // for existing ringtone Uri urie = RingtoneManager.getActualDefaultRingtoneUri( getApplicationContext(), RingtoneManager.TYPE_RINGTONE); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, urie); startActivityForResult(intent, 5); }