android - ¿Cómo establecer un tono de llamada con RingtoneManager.ACTION_RINGTONE_PICKER?
set (4)
Debe implementar onActivityResult()
para recibir el resultado de la selección del usuario y luego guardarlo.
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 a esto :)
Intento encontrar una solución aquí, pero solo hay una 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, el usuario puede elegir qué tono desea, pero me pierdo 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 puedo encontrar 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);
El código es perfecto y funciona para mí. Pero se olvidó de mencionar los permisos requeridos ... aquí está. prueba este código ... espero que ayude
<uses-permission android:name="android.permission.WRITE_SETTINGS" ></uses-permission>
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" ></uses-permission>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" ></uses-permission>
Este código mostrará el tono de llamada predeterminado que el usuario establece antes cuando se utiliza el selector de tono de llamada.
Utilice el código de abajo 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);
}
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 seleccionado 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.