获取 Android 的自定义来电铃声
Get custom ringtone incoming call of Android
我可以使用下面的代码获取来电的当前铃声
Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(
getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
defaultRingtone = RingtoneManager.getRingtone(getApplicationContext(),
defaultRintoneUri);
但是我想获取由其他应用程序设置的自定义铃声。
我怎样才能得到它?
您必须在媒体数据库中插入自定义铃声。
试试这个代码它会解决你的问题。
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);
祝你好运
如果铃声仅用于该应用程序,则该铃声文件可能是私有的并且仅由该应用程序拥有。您无权访问它,这是 Android 上的安全系统。每个应用程序基本上都作为不同的 Linux 用户运行。
另一方面,如果为铃声系统设置了铃声,则该文件将在所有应用程序之间共享。在这种情况下,文件存储在 public 文件夹中,RingtoneManager 将为您正确提供当前铃声。
我找到了答案。实际上,铃声管理器会给我们 Android 设备的默认铃声。但是如果铃声被其他应用程序改变了,我们想要得到它。我们需要权限
READ_EXTERNAL_STORAGE
让我举个例子:
Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(
getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
defaultRingtone = RingtoneManager.getRingtone(getApplicationContext(),
defaultRintoneUri);
没有 READ_EXTERNAL_STORAGE 许可:以上代码将 return Android 设备的默认铃声
但如果其他应用程序将自定义铃声更改为 "Banana.mp3" 之类的歌曲(小黄人 - 你知道吗?哈哈)
并获得 READ_EXTERNAL_STORAGE 许可:您将完全收到 Banana 歌曲
没有 READ_EXTERNAL_STORAGE 权限:Android 设备的默认铃声。
我可以使用下面的代码获取来电的当前铃声
Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(
getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
defaultRingtone = RingtoneManager.getRingtone(getApplicationContext(),
defaultRintoneUri);
但是我想获取由其他应用程序设置的自定义铃声。 我怎样才能得到它?
您必须在媒体数据库中插入自定义铃声。
试试这个代码它会解决你的问题。
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);
祝你好运
如果铃声仅用于该应用程序,则该铃声文件可能是私有的并且仅由该应用程序拥有。您无权访问它,这是 Android 上的安全系统。每个应用程序基本上都作为不同的 Linux 用户运行。
另一方面,如果为铃声系统设置了铃声,则该文件将在所有应用程序之间共享。在这种情况下,文件存储在 public 文件夹中,RingtoneManager 将为您正确提供当前铃声。
我找到了答案。实际上,铃声管理器会给我们 Android 设备的默认铃声。但是如果铃声被其他应用程序改变了,我们想要得到它。我们需要权限
READ_EXTERNAL_STORAGE
让我举个例子:
Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(
getApplicationContext(), RingtoneManager.TYPE_RINGTONE);
defaultRingtone = RingtoneManager.getRingtone(getApplicationContext(),
defaultRintoneUri);
没有 READ_EXTERNAL_STORAGE 许可:以上代码将 return Android 设备的默认铃声
但如果其他应用程序将自定义铃声更改为 "Banana.mp3" 之类的歌曲(小黄人 - 你知道吗?哈哈)
并获得 READ_EXTERNAL_STORAGE 许可:您将完全收到 Banana 歌曲
没有 READ_EXTERNAL_STORAGE 权限:Android 设备的默认铃声。