Android设置铃声不适用于三星手机

时间:2014-08-19 09:56:22

标签: android

我已经在网上搜索了一下,stackoverflow找不到任何东西,除了我正在使用的代码。

我的问题是它适用于索尼xperia U(2.3.3和4.0.3)和xperia neo v(2.3.3和4.0.3),并且不适用于galaxy gio(2.2), s3和s4(4.0 +)

private void setRingTone()
{
try
{
    String path = Environment.getExternalStorageDirectory()+ "/testring/a.mp3";
    File file = new File(path);
    Log.v(file.getAbsolutePath(), path);
    ContentValues values = new ContentValues();
    values.put(MediaStore.MediaColumns.DATA, file.getAbsolutePath());
    values.put(MediaStore.MediaColumns.TITLE, "0000");
    values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
    values.put(MediaStore.Audio.Media.ARTIST, "BY ME");
    values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
    values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false);
    values.put(MediaStore.Audio.Media.IS_ALARM, false);
    values.put(MediaStore.Audio.Media.IS_MUSIC, true);
    Uri uri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());
    Uri newUri = getContentResolver().insert(uri, values);
    RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, newUri);
    Toast.makeText(this, "success", Toast.LENGTH_SHORT).show();
}
catch (Exception e)
{
    Toast.makeText(this, "failed", Toast.LENGTH_SHORT).show();
    e.printStackTrace();
}
}

mp3的路径是有效的,因为我可以在同一个应用程序中播放它,这段代码永远不会抛出execption并完成成功消息。

我有这些权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

我错过了什么?

1 个答案:

答案 0 :(得分:0)

在我再次添加之前,我刚刚从ContentResolver中删除了mp3 uri,而且效果非常好。

Uri uri = MediaStore.Audio.Media.getContentUriForPath(file.getAbsolutePath());
getContentResolver().delete(uri ,null ,null);
Uri newUri = getContentResolver().insert(uri, values);