【问题标题】:android save Ringtone in Sharedpreferences and get it againandroid在Sharedpreferences中保存铃声并再次获取
【发布时间】:2016-06-15 10:29:06
【问题描述】:

我得到了当前的铃声。现在我只想把它保存在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();

【问题讨论】:

  • 请澄清您的具体问题或添加其他详细信息以准确突出您的需要。
  • 我只想将当前铃声保存在 sharedprefrences 中并获取它。
  • 那是因为您只能在 SharedPrefs 中保存原始数据类型。您可以将Uri 转换为字符串并以这种方式保存吗?然后再从字符串重新创建Uri
  • 请你给我一些我在android中的新代码

标签: java android ringtone


【解决方案1】:

伙计,您的代码是正确的。我刚刚写了一个 Demo 测试你的代码。

调用此代码段Ringtone currentRingtone = RingtoneManager.getRingtone(context, currentRintoneUri);时,您可能需要权限 android.permission.READ_EXTERNAL_STORAGE

当我调用代码段时,我在 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)

【讨论】:

  • 我也有这个权限
  • 请告诉我如何将其设置为铃声?
  • RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(), RingtoneManager.TYPE_RINGTONE, newUri); 此外,newUri 必须存在于 MediaStore ContentProvider 中。
  • 如果我们用这个方法设置铃声,那其他已经设置好的铃声呢?
【解决方案2】:

当你想得到铃声时,进程相同,

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

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

Uri uri = Uri.parse(ringtone);

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

【讨论】:

  • 我看不懂,请您再描述一下好吗?
  • 我使用 uri 来获取铃声,但什么也得不到
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多