Как установить рингтон программно в oreo 8.0
Я могу установить мелодию звонка программно между 4,0 и 6,0(Зефир), но не могу установить после 6,0(Зефир).
Не могли бы вы сообщить мне, как решить эту проблему, чтобы я также мог установить мелодию звонка на устройства с Android Oreo 8.0 и 8.1 версии?
public void setRingtone(String filepath) {
File ringtoneFile = new File(filepath);
ContentValues content = new ContentValues();
content.put(MediaStore.MediaColumns.DATA, ringtoneFile.getAbsolutePath());
content.put(MediaStore.MediaColumns.TITLE, "Ring");
content.put(MediaStore.MediaColumns.SIZE, ringtoneFile.length());
content.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
// content.put(MediaStore.Audio.Media.ARTIST, "Madonna");
content.put(MediaStore.Audio.Media.IS_RINGTONE, true);
content.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
content.put(MediaStore.Audio.Media.IS_ALARM, false);
content.put(MediaStore.Audio.Media.IS_MUSIC, true);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(ringtoneFile.getAbsolutePath());
getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + ringtoneFile.getAbsolutePath() + "\"", null);
Uri newUri = getContentResolver().insert(uri, content);
System.out.println("uri==" + uri);
Log.i("TAG", "the ringtone uri is :" + newUri);
RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(), RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText(this, "Ringtone set success!", Toast.LENGTH_SHORT).show();
}
Благодарю вас.
1 ответ
Добавьте разрешение URI на ваш проект
AndroidManifest.xml
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
создайте папку xml в res и создайте файл provider_path.xml в res/XML следующим образом
provider_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
Надеюсь, поможет