Как сохранить выбранный пользователем рингтон в студии android? - PullRequest
0 голосов
/ 20 марта 2020
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, чтобы выбрать доступную мелодию звонка на собственном устройстве. Когда вызывается метод startActivityForResult(), он перенаправляет в пользовательское всплывающее диалоговое окно, из которого пользователь может выбрать мелодию звонка, и одновременно запускает эту мелодию звонка. Это нормально. Но я хочу сохранить эту мелодию, чтобы воспроизвести ее на другом занятии. И что я должен делать? Могу ли я сохранить его в базе данных (SQLite), SharedPreference или любым другим способом?

Редактировать: Я не знаю, почему мой вопрос закрыли, даже если я предоставил всю информацию. Но все же, давая больше информации, чтобы лучше понять мой вопрос.

Xml file:

<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">

Вышеуказанный метод вызывается, когда пользователь выбирает мелодию звонка. Я получил один ответ, который сказал мне использовать SharedPreference для хранения URI. Я хочу сохранить выбранный рингтон даже после закрытия приложения. Таким образом, SharedPreference является лучшим вариантом, но как сделать его глобальным, чтобы другие виды деятельности также могли его использовать?

Если я создаю объект SharedPreference в этом файле java, как я могу получить доступ к другой активности?

1 Ответ

0 голосов
/ 20 марта 2020

Чтобы сохранить мелодию звонка Uri, вы можете использовать:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("currentTone", currentTone.toString()); 
editor.commit();

Чтобы извлечь мелодию звонка Uri, вам нужно проанализировать строку в Uri:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
String currentToneString= settings.getString("currentTone", null);
Uri currentTone= Uri.parse(currentToneString);
return currentTone;
...