如何在android studio中存储用户选择的铃声?
我有这个如何在android studio中存储用户选择的铃声?,android,sqlite,sharedpreferences,ringtone,Android,Sqlite,Sharedpreferences,Ringtone,我有这个onClick方法从自己的设备中选择可用的铃声。 当调用startActivityForResult()方法时,它会重定向到自定义弹出对话框,用户可以从中选择铃声,同时启动该铃声。 没关系。 但我想保存铃声,以便在其他活动中播放。 那我该怎么办? 我可以将其存储在数据库(SQLite)中,或者存储在SharedReference中,或者以任何其他方式存储吗 编辑: 即使我提供了所有的信息,我也不知道为什么我的问题被解决了。但仍然提供更多信息,以便更好地理解我的问题 Xml文件: publ
onClick
方法从自己的设备中选择可用的铃声。
当调用startActivityForResult()
方法时,它会重定向到自定义弹出对话框,用户可以从中选择铃声,同时启动该铃声。
没关系。
但我想保存铃声,以便在其他活动中播放。
那我该怎么办?
我可以将其存储在数据库(SQLite)中,或者存储在SharedReference中,或者以任何其他方式存储吗
编辑:
即使我提供了所有的信息,我也不知道为什么我的问题被解决了。但仍然提供更多信息,以便更好地理解我的问题
Xml文件:
public void onRingtone(View view) {
final Uri currentTone= RingtoneManager.getActualDefaultRingtoneUri(Setting.this, RingtoneManager.TYPE_ALARM);
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Ringtone");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, currentTone);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
startActivityForResult(intent, 999);
}
当用户选择铃声时,调用上述方法。我得到一个答案,告诉我使用SharedReference来存储uri。
即使在应用程序关闭后,我也要保留选定的铃声。所以SharedReference是一个更好的选择,但如何使其全球化,以便其他活动也可以使用它
如果我在此java文件中创建SharedReference对象,如何访问其他活动?要保存铃声Uri,可以使用:
<RelativeLayout
android:id="@+id/Ringtone"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_below="@id/sp2"
android:layout_marginTop="1dp"
android:background="@drawable/pressed"
android:clickable="true"
android:focusable="true"
android:onClick="onRingtone"
android:gravity="center"
android:paddingTop="15dp"
android:paddingBottom="15dp">
要检索铃声Uri,您需要将字符串解析为Uri:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("currentTone", currentTone.toString());
editor.commit();
currentTone.toString()将包含什么内容?事实上,我是从网上复制了铃声接受者代码,所以我不知道这是什么。这个偏好是否适用于所有活动?Uri应该是铃声的路径。onActivityResult,uri将是data.getData();参考本文,我应该在代码的3行之后使用commit()函数吗?
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
String currentToneString= settings.getString("currentTone", null);
Uri currentTone= Uri.parse(currentToneString);
return currentTone;