2010-11-20 16 views
5

Có cách nào để thêm giá trị mặc định trong RingtonePreference, thông qua XML không? Ví dụ, đây là những gì preferences.xml của tôi trông giống như.Tôi có thể chèn một đặc tính android: defaultValue cho RingtonePreference, thông qua XML không?

<RingtonePreference android:key="alarm" 
android:title="Alarm" android:name="Alarm" 
android:summary="Select an alarm" 
android:ringtoneType="alarm" android:showDefault="true" /> 

Nếu có thể, tôi muốn thiết lập các RingtonePreference để nhạc chuông mặc định, như thế này:

<RingtonePreference android:key="alarm" 
android:title="Alarm" android:name="Alarm" 
android:summary="Select an alarm" 
android:ringtoneType="alarm" android:showDefault="true" 
android:defaultValue="defaultRingtone" /> 
+0

thử 2 sau không có may mắn: android: defaultValue = "Nhạc chuông mặc định" android: defaultValue = "0" – Japtar

+0

Có thêm may mắn với điều này: defaultValue = "". Điều này đặt mặc định là "im lặng", tuy nhiên. Có vẻ như RingtonePreference mong đợi một giá trị chuỗi, nơi có nhạc chuông. Để có được giá trị mặc định, tôi sẽ phải lấy chuỗi cho nhạc chuông mặc định trong Cài đặt. – Japtar

Trả lời

4

đặn ra một công việc xung quanh, trong thiết lập nhạc chuông mặc định.

Đối với những người sử dụng cả một RingtonePreferencePreferenceManager.setDefaultValues(), android:defaultValue trên RingtonePreference mất trong một chuỗi URI của một nhạc chuông. Bằng cách cung cấp một chuỗi rỗng, bạn đang đặt mặc định tùy chọn thành "im lặng", trong khi các chuỗi khác có thể sẽ không dẫn đến URI hợp lệ.

công việc xung quanh này, sau đó, là để cung cấp một chuỗi không có thật, chẳng hạn như android:defaultValue="defaultRingtone":

<RingtonePreference android:key="alarm" 
android:title="Alarm" android:name="Alarm" 
android:summary="Select an alarm" 
android:ringtoneType="alarm" android:showDefault="true" 
android:defaultValue="defaultRingtone" /> 

Khi gọi PreferenceManager.setDefaultValues(), lấy các sở thích, và kiểm tra xem chuỗi giả đang được lưu trữ:

// Set the stored preferences to default values defined in options.xml 
PreferenceManager.setDefaultValues(this, R.layout.options, false); 

// Check the stored string value, under the RingtonPreference tag 
final SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); 
final String savedUri = savedState.getString("alarm", ""); 

// By default, set the alarm's URI to null 
Uri alarmUri = null; 

// Check if a String was actually provided 
if(savedUri.length() > 0) { 

    // If the stored string is the bogus string... 
    if(savedUri.equals("defaultRingtone")) { 

    // Set the alarm to this system's default alarm. 
    alarmUri = Settings.System.DEFAULT_ALARM_ALERT_URI; 

    // Save this alarm's string, so that we don't have to go through this again 
    final SharedPreferences.Editor saveEditor = saveState.edit(); 
    saveEditor.putString("alarm", alarmUri.toString()); 
    saveEditor.commit(); 
    } 

    // Otherwise, retrieve the URI as normal. 
    else { 
    alarmUri = Uri.parse(savedUri); 
    } 
} 
15

Bạn có thể xác định mặc định trong XML. Như bạn đã nói, nó cần một URI. Chỉ cần đặt URI mặc định cho những gì bạn cần. Ví dụ, đối với một báo động mặc định âm thanh bạn sẽ đặt:

<RingtonePreference android:key="alarm" 
android:title="Alarm" android:name="Alarm" 
android:summary="Select an alarm" 
android:ringtoneType="alarm" android:showDefault="true" 
android:defaultValue="content://settings/system/alarm_alert" /> 

Đối với một thông báo bạn sẽ đặt:

android:defaultValue="content://settings/system/notification_sound" 

vv

Các vấn đề liên quan