我希望用户能够为我的应用选择通知铃声。我有一个自定义声音文件(放在/ raw中的.mp3文件),我想成为默认的通知铃声。我以这种方式在共享首选项中保存/获取所选铃声:
public static void setNotificationSound(Activity activity, String uri) {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(activity);
sharedPref.edit().putString("notificationSound", uri).apply();
}
public static Uri getNotificationSound(Context context) {
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
return Uri.parse(sharedPref.getString("notificationSound", ""));
}
这就是我展示铃声选择器的方式:
Uri notificationSoundUri = SharedPrefMethods.getNotificationSound(mACA); //gets the saved uri
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Notification Ringtone");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, Uri.parse("android.resource://" + mACA.getPackageName() + "/raw/notificationbrightside")); //my custom sound
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, notificationSoundUri); //pass the saved URI to be 'checked'
this.startActivityForResult(intent, 555);
我的问题似乎与EXTRA_RINGTONE_EXISTING_URI
行有关。
当用户选择系统铃声并返回到选择器时,会正确检查铃声。但是,当用户选择“没有”时,或者'默认通知声音' (我的自定义声音)然后回到选择器,没有检查过。
我的代码中的其他所有内容(此处未显示)都可以 - 当我选择任何铃声(包括自定义铃声)时,声音会正确分配给我的通知。当我选择“没有”时,没有播放声音。这意味着正确的URI将保存到SharedPref。
我必须将什么传递给意图,以便“没有”'或者'默认通知声音'他们被选中时会被检查吗?
答案 0 :(得分:1)
当没有'没有'时通过Settings.System.DEFAULT_NOTIFICATION_URI
被选中。
当默认通知声音为'时,请通过RingtoneManager.EXTRA_RINGTONE_EXISTING_URI
。在from pyquery import PyQuery as pq
scripttags = pq('src') ## will output a list of script tags
print(scriptTags[0].src)
字段中选择。