2015-09-11 112 views

回答

0

端起来只是把RingtonePreference的子类,覆盖onPrepareRingtonePickerIntent方法始终提供默认的通知音RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI,非常微小的变化,所以希望它是安全的。这是我的班级:

package com.myexample; 

import android.content.Context; 
import android.content.Intent; 
import android.media.RingtoneManager; 
import android.preference.RingtonePreference; 
import android.util.AttributeSet; 

public class MyRingtonePreference extends RingtonePreference { 
    public MyRingtonePreference(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    public MyRingtonePreference(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public MyRingtonePreference(Context context) { 
     super(context); 
    } 

    protected void onPrepareRingtonePickerIntent(Intent ringtonePickerIntent) { 

     ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, 
       onRestoreRingtone()); 

     ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, getShowDefault()); 
     if (getShowDefault()) { 
      ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, 
        RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)); 
     } 

     ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, getShowSilent()); 
     ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, getRingtoneType()); 
     ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, getTitle()); 
    } 
}