我收到了当前的铃声。现在我只想将其保存在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();
答案 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)
。