我可以使用以下代码获取来电的当前铃声
Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(
getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
defaultRingtone = RingtoneManager.getRingtone(getApplicationContext(),
defaultRintoneUri);
但我希望获得由其他应用程序设置的自定义铃声。 我怎么能得到它?
答案 0 :(得分:0)
如果铃声仅用于该应用程序,则该铃声文件可能是私有的,仅由该应用程序拥有。您无法访问它,这是Android上的安全系统。每个应用程序基本上都作为一个独特的Linux用户运行。
另一方面,如果为铃声系统设置了铃声,则该文件在所有应用之间共享。在这种情况下,文件存储在公共文件夹中,RingtoneManager将正确地为您提供当前的铃声。
答案 1 :(得分:0)
我找到了答案。实际上,铃声管理器会给我们Android设备的默认铃声。但是如果铃声被其他应用程序改变了,我们想得到它。我们需要许可
READ_EXTERNAL_STORAGE
让我举个例子:
Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(
getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
defaultRingtone = RingtoneManager.getRingtone(getApplicationContext(),
defaultRintoneUri);
没有READ_EXTERNAL_STORAGE权限:上面的代码将返回Android设备的默认铃声
但是,如果其他应用程序更改自定义铃声与#34; Banana.mp3" (小人 - 你知道对吗?哈哈)
使用READ_EXTERNAL_STORAGE权限:您将收到香蕉之歌
没有READ_EXTERNAL_STORAGE权限:Android设备的默认铃声。
答案 2 :(得分:-1)
您必须在Media的数据库中插入该自定义铃声。
试用此代码它将解决您的问题。
File path = new File(path, "mysong.mp3"); // Path of your custom ringtone file.
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, path.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "My Song title"); // Title
values.put(MediaStore.MediaColumns.SIZE, 215454); // Size of file
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3"); // File Format
values.put(MediaStore.Audio.Media.ARTIST, "Madonna");
values.put(MediaStore.Audio.Media.DURATION, 230);
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
values.put(MediaStore.Audio.Media.IS_ALARM, false); // Default is false
values.put(MediaStore.Audio.Media.IS_MUSIC, false); // Default is false
//Insert the whole content in the Media database.
Uri uri = MediaStore.Audio.Media.getContentUriForPath(path.getAbsolutePath());
Uri newUri = main.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(
myActivity,
RingtoneManager.TYPE_RINGTONE,
newUri);
好运