![](/img/trans.png)
[英]Android - save Object to SharedPreferences and get it anywhere in the app
[英]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.