繁体   English   中英

android将铃声保存在Sharedpreferences中并再次获取

[英]android save Ringtone in Sharedpreferences and get it again

我有当前的铃声。 现在,我只想将其保存在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();

当您想获取“铃声相同”过程时,

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

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

Uri uri = Uri.parse(ringtone);

现在您可以使用uri来获取铃声。

老兄,您的代码是正确的。 我刚刚编写了一个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() 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 保存String.valueOf(Ringtone object)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM