簡體   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