所以我搜索了Google和SO,但似乎找不到答案。起初,当我允许用户在我的应用程序中更改声音时,我只是试图显示应用程序中原始文件夹中的应用程序声音,并决定采用自定义菜单,仅处理2种声音就需要太多工作。
因此,我开始将它们复制到设备本身,问题是它们仍然没有显示在ACTION_RINGTONE_PICKER
上,尽管我可以手动在设备上看到它们(如果我导航到该文件夹)。我应该将它们存储在另一条路径中吗?复制后,我也尝试过重启设备。
这是我复制文件的方式:
File rootDirectory = Environment.getExternalStorageDirectory();
File folder = new File(rootDirectory + File.separator +"My" + File.separator + "ringtone");
fileOutputStream = new FileOutputStream(
new File(folder, "Custom_Sound.mp3"));
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
fileOutputStream.write(buffer, 0, length);
}
inputStream.close();
fileOutputStream.close();
这是我获取铃声列表的方法:
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALL);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Notification Sound");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
this.startActivityForResult(intent, requestCode);
清单中确实包含以下内容,并且检查了运行时权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>