gpt4 book ai didi

android - 如何从存储在外部存储器中的音频文件设置 Android 铃声

转载 作者:行者123 更新时间:2023-11-29 01:03:01 34 4
gpt4 key购买 nike

我想从我的应用程序中从云端下载 mp3 文件,然后将下载的音频文件设置为铃声。我通过 stackoverflow 尝试了很多解决方案,并花了很多时间在谷歌中搜索,但没有任何好的结果。

更新:

我已经解决了我的问题并将我的解决方案放在下面的答案中。如果您遇到我的问题,我希望这段代码可以帮助您解决问题。

谢谢

最佳答案

经过努力解决我的问题,尝试更多解决方案并将其中一些组合在一起。最后我修复了它,这是我编辑的最终代码:

    public void setAsRingtone(String url, String title) {
try {
String path = Environment.getExternalStorageDirectory() + "/ringtones/";
String fileName = title + ".mp3";
File ringtone = new File(path, fileName);
if (!ringtone.exists()) {
// Download Ringtone from the storage
Toast.makeText(com.tibadev.ahlyringtones.activities.MainActivity.this, "برجاء الانتظار لحين تحميل النغمة", Toast.LENGTH_SHORT).show();
DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
request.setAllowedOverRoaming(false);
request.setTitle(title);
request.setVisibleInDownloadsUi(true);
File download = new File(Environment.getExternalStorageDirectory() + "/ringtones/", title + ".mp3");
Uri parse = Uri.fromFile(download);
request.setDestinationUri(parse);
assert downloadManager != null;
downloadManager.enqueue(request);
}
// Set mp3 file as ringtone
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, ringtone.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, title);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put("_size", ringtone.length());
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(ringtone.getAbsolutePath());
getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + ringtone.getAbsolutePath() + "\"", null);
Uri newUri = com.tibadev.ahlyringtones.activities.MainActivity.this.getContentResolver().insert(uri, values);
try {
RingtoneManager.setActualDefaultRingtoneUri(getBaseContext(), RingtoneManager.TYPE_RINGTONE, newUri);
} catch (Exception e) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.System.canWrite(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
.setData(Uri.parse("package:" + getPackageName()))
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}

关于android - 如何从存储在外部存储器中的音频文件设置 Android 铃声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49676453/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com