如何将选定的铃声存储在 android studio 中?
How to store selected Ringtone in android studio?
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);
}
我有这个 onClick 方法来 select 来自它自己的设备的可用铃声。
当调用 startActivityForResult() 方法时,它会重定向到自定义弹出对话框,用户可以从中 select 铃声,同时启动该铃声。
没关系。
但我想保存该铃声以便在另一个 activity 上播放。
所以我该怎么做?
我可以将它存储在数据库 (SQLite)、SharedPreference 或任何其他方式中吗?
编辑:
我不知道为什么我的问题会被关闭,即使我提供了所有 information.But 仍然提供更多信息,以便更好地理解我的问题。
Xml 文件:
<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">
上述方法在用户select设置铃声时调用。我得到一个答案告诉我使用 SharedPreference 来存储 uri。
但是uri在方法的第一行被声明为final。甚至它不存储 selected 铃声。在 startActivityForResult() 方法上采用 selected 铃声。所以我认为需要使用此方法 return 或在 intent 对象上完成工作。
如果我在此 java 文件中创建 SharedPreference 对象,我如何才能访问其他活动?
这是检索 Uri
对应于 onActivityResult() 中选取的音调的代码。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == 999) {
Uri ringtoneUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
}
}
然后您可以将其作为成员存储在当前 activity 中,并通过意图将其传递给另一个 activity
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);
}
我有这个 onClick 方法来 select 来自它自己的设备的可用铃声。 当调用 startActivityForResult() 方法时,它会重定向到自定义弹出对话框,用户可以从中 select 铃声,同时启动该铃声。 没关系。 但我想保存该铃声以便在另一个 activity 上播放。 所以我该怎么做? 我可以将它存储在数据库 (SQLite)、SharedPreference 或任何其他方式中吗?
编辑: 我不知道为什么我的问题会被关闭,即使我提供了所有 information.But 仍然提供更多信息,以便更好地理解我的问题。
Xml 文件:
<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">
上述方法在用户select设置铃声时调用。我得到一个答案告诉我使用 SharedPreference 来存储 uri。 但是uri在方法的第一行被声明为final。甚至它不存储 selected 铃声。在 startActivityForResult() 方法上采用 selected 铃声。所以我认为需要使用此方法 return 或在 intent 对象上完成工作。
如果我在此 java 文件中创建 SharedPreference 对象,我如何才能访问其他活动?
这是检索 Uri
对应于 onActivityResult() 中选取的音调的代码。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == 999) {
Uri ringtoneUri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
}
}
然后您可以将其作为成员存储在当前 activity 中,并通过意图将其传递给另一个 activity