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); }