Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android studio中存储用户选择的铃声?_Android_Sqlite_Sharedpreferences_Ringtone - Fatal编程技术网

如何在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;