铃声选择器:check' none'或者'默认通知声音'当他们被选中时

时间:2017-12-10 11:21:03

标签: android ringtone ringtonemanager

我希望用户能够为我的应用选择通知铃声。我有一个自定义声音文件(放在/ 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。

我必须将什么传递给意图,以便“没有”'或者'默认通知声音'他们被选中时会被检查吗?

1 个答案:

答案 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) 字段中选择。