Android为每个SIM设置自定义铃声

时间:2016-02-17 10:46:43

标签: android ringtone dual-sim ringtonemanager

我正在尝试使用以下代码设置自定义铃声:

private void registerRingtone(String ringtoneFilePath) {

    // Create File object for the specified ring tone path
    File ringtoneFile = new File(ringtoneFilePath);

    // Insert the ringtone to the content provider
    ContentValues value = new ContentValues();
    value.put(MediaStore.MediaColumns.DATA, ringtoneFile.getAbsolutePath());
    value.put(MediaStore.MediaColumns.TITLE, ringtoneFile.getName());
    value.put(MediaStore.MediaColumns.SIZE, ringtoneFile.length());
    value.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
    value.put(MediaStore.Audio.Media.ARTIST, "myapp");
    value.put(MediaStore.Audio.Media.IS_ALARM, false);
    value.put(MediaStore.Audio.Media.IS_MUSIC, false);
    value.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
    value.put(MediaStore.Audio.Media.IS_RINGTONE, true);

    ContentResolver cr = context.getContentResolver();
    Uri ringtoneUri = MediaStore.Audio.Media.getContentUriForPath(ringtoneFile.getAbsolutePath());
    System.out.println("Path to ringtone= " + ringtoneUri);

    Uri addedUri = cr.insert(ringtoneUri, value);
    System.out.println("addedUri= " + addedUri);

}

public static void setDefaultRingtone(Context context, String ringtoneFilePath) {

    Uri ringtoneUri = Uri.parse(ringtoneFilePath);
    // Set default ring tone
    RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, ringtoneUri);

}

我正在调用registerRingtone方法并传递我的铃声路径(例如“/storage/emulated/0/test/ringtones/14546548681.mp3”)。

现在我面临着奇怪的问题。当我尝试为具有双SIM卡的手机设置铃声时,代码有时会工作(设置铃声)并且在其他时间不起作用(不设置铃声)。例如。它适用于MotoG,它是双卡而不适用于几乎所有其他具有双SIM卡的手机(即SONY Experia C,HTC Desire,Lenovo K4 Note)

我得出结论,手机可以选择为两个SIM设置不同的铃声,例如SIM 1 - 铃声1和SIM -2 - 铃声2,它在设置铃声时失败,也删除了我以前的选择。

如何为允许SIM卡特定铃声选择的设备设置自定义铃声?

有人可以帮忙吗?

0 个答案:

没有答案