android保存共享偏好中的铃声并再次获取它

时间:2016-06-15 10:29:06

标签: java android ringtone

我收到了当前的铃声。现在我只想将其保存在sharedpreference

我怎样才能做到这一点?

这里是我尝试的代码:

Uri currentRintoneUri = 
          RingtoneManager.getActualDefaultRingtoneUri(context.getApplicationContext(), 
                                                      RingtoneManager.TYPE_RINGTONE);
Ringtone currentRingtone = RingtoneManager.getRingtone(context, currentRintoneUri);

它不适用于铃声,但适用于编辑文字:

sharedpreferences = getSharedPreferences(MyPRE, Context.MODE_PRIVATE);
String current = sharedpreferences.getString(CUR, "");
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(CUR, String.valueOf((currentRingtone)));
editor.commit();

2 个答案:

答案 0 :(得分:0)

如果您想获得Ringtone Same流程,

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

String ringtone = preferences.getString("CUR", "DEFAULT_SOUND");

Uri uri = Uri.parse(ringtone);

现在你可以用uri来获取铃声了。

答案 1 :(得分:0)

巴迪,你的代码是对的。我刚刚写了一个Demo测试你的代码。

调用此代码段android.permission.READ_EXTERNAL_STORAGE

时,您可能需要权限 Ringtone currentRingtone = RingtoneManager.getRingtone(context, currentRintoneUri);

当我调用代码段时,我在logcat中收到了此警告:W/MediaPlayer: Couldn't open file on client side; trying server side: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media/79645 from pid=8293, uid=11729 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission()

因此,正确的方法是将String.valueOf(Uri)保存在SharedPreferences NOT 中保存String.valueOf(Ringtone object)