android 在共享首选项中保存铃声并重新获取
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()
所以,正确的方法是在 SharedPreferences 中保存 String.valueOf(Uri)
而不是 保存 String.valueOf(Ringtone object)
.
我得到了当前的铃声。现在我只想将它保存在 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()
所以,正确的方法是在 SharedPreferences 中保存 String.valueOf(Uri)
而不是 保存 String.valueOf(Ringtone object)
.