@Maxood
Le code de @Clive est ce que vous devez régler la sonnerie. Vous aurez besoin du chemin absolu vers le fichier, que vous ne pouvez pas obtenir à partir d'une ressource brute.
La solution est d'obtenir l'actif du fichier de ressources et de l'écrire sur la carte SD 1ère, avant de le donner au résolveur de contenu pour insertion.
File newSoundFile = new File("/sdcard/media/ringtone", "myringtone.oog");
Uri mUri = Uri.parse("android.resource://com.your.package/R.raw.your_resource_id");
ContentResolver mCr = app.getContentResolver();
AssetFileDescriptor soundFile;
try {
soundFile= mCr.openAssetFileDescriptor(mUri, "r");
} catch (FileNotFoundException e) {
soundFile=null;
}
try {
byte[] readData = new byte[1024];
FileInputStream fis = soundFile.createInputStream();
FileOutputStream fos = new FileOutputStream(newSoundFile);
int i = fis.read(readData);
while (i != -1) {
fos.write(readData, 0, i);
i = fis.read(readData);
}
fos.close();
} catch (IOException io) {
}
Ensuite, vous pouvez utiliser la solution
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, newSoundFile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "my ringtone");
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/oog");
values.put(MediaStore.MediaColumns.SIZE, newSoundFile.length());
values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name);
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, true);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(newSoundFile.getAbsolutePath());
Uri newUri = mCr.insert(uri, values);
try {
RingtoneManager.setActualDefaultRingtoneUri(getContext(), RingtoneManager.TYPE_RINGTONE, newUri);
} catch (Throwable t) {
Log.d(TAG, "catch exception");
}
tition Ne pas oublier d'écrire le l'autorisation
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
dans votre manifeste
this helps
avez-vous déjà trouvé une solution? – vondip
Ce n'est pas un doublon! cela parle de définir une sonnerie à partir d'un fichier brut. L'autre est juste comment définir une sonnerie déjà sur la carte SD. S'il vous plaît rouvrir j'ai une solution complète. – ozmike