我已经让用户选择他们想要在通知中使用什么声音,但无法让它发挥作用。它始终播放默认声音。他们在偏好中选择自己的声音
<RingtonePreference
android:defaultValue="content://settings/system/notification_sound"
android:key="alarmsound"
android:ringtoneType="notification"
android:showDefault="true"
android:summary="Choose Your Alarm Sound"
android:title="Alarm Sound" />
</PreferenceCategory>
然后它在我的通知活动中被拉起
SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
String alarms = getPrefs.getString("alarmsound", "");
这将返回一个内容 Uri content://media/external/audio/media/10
我试图将其转换为文件路径
String filePath = null;
Uri _uri = Uri.parse(alarms);
Cursor cursor = this.getContentResolver().query(_uri, new String [] { android.provider.MediaStore.Audio.Media.DATA }, null, null, null);
cursor.moveToFirst();
filePath = cursor.getString(0);
cursor.close();
Log.e(TAG5, filePath);
这返回 /storage/sdcard0/Notfications/hangout_ringtone.m4a
我试着把它放进去,.setSound(filePath);
但它不起作用。它想要一个Uri
,我知道这不是一条完整的路径。有任何想法吗?