Loading AndroidManifest.xml +2 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,8 @@ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="com.android.deskclock.worldclock.permissions.WRITE_DATABASE" /> <uses-permission android:name="org.codeaurora.permission.POWER_ON_ALERT" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> <application android:label="@string/app_label" android:name=".DeskClockApplication" Loading src/com/android/deskclock/AlarmClockFragment.java +17 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.deskclock; import android.Manifest; import android.app.Activity; import android.app.LoaderManager; import android.content.ActivityNotFoundException; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; Loading Loading @@ -78,6 +79,7 @@ public final class AlarmClockFragment extends DeskClockFragment implements public static final int REQUEST_CODE_PERMISSIONS = 11; public static final int REQUEST_CODE_EXTERN_AUDIO = 12; public static final int REQUEST_READ_EXTERNAL_STORAGE_PERMISSION = 13; public static final int REQUEST_CODE_WRITE_SETTINGS = 14; private Uri mWaitUpdateUri; private static final String QUERY_URI = "content://com.android.deskclock/alarms"; Loading Loading @@ -288,6 +290,12 @@ public final class AlarmClockFragment extends DeskClockFragment implements updateSelectAlarmRingToneUri(uri); } break; case REQUEST_CODE_WRITE_SETTINGS: if (Settings.System.canWrite(getContext())) { DataModel.getDataModel().setDefaultAlarmRingtoneUri( Uri.parse(new_default_ringtone_Uri)); } break; default: LogUtils.w("Unhandled request code in onActivityResult: " + requestCode); } Loading Loading @@ -345,7 +353,15 @@ public final class AlarmClockFragment extends DeskClockFragment implements // Update the default ringtone for future new alarms. DataModel.getDataModel().setDefaultAlarmRingtoneUri(Uri.parse(new_default_ringtone_Uri)); if (!Settings.System.canWrite(context)) { Intent settingIntent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + context.getPackageName())); try { startActivityForResult(settingIntent, REQUEST_CODE_WRITE_SETTINGS); } catch (ActivityNotFoundException e) { e.printStackTrace(); } } } } Loading src/com/android/deskclock/data/SettingsDAO.java +18 −1 Original line number Diff line number Diff line Loading @@ -18,8 +18,10 @@ package com.android.deskclock.data; import android.content.Context; import android.content.SharedPreferences; import android.media.RingtoneManager; import android.net.Uri; import android.preference.PreferenceManager; import android.provider.Settings; import com.android.deskclock.R; import com.android.deskclock.Utils; Loading Loading @@ -126,7 +128,16 @@ final class SettingsDAO { */ static Uri getDefaultAlarmRingtoneUri(Context context, Uri defaultUri) { final SharedPreferences prefs = getSharedPreferences(context); final String uriString = prefs.getString(KEY_DEFAULT_ALARM_RINGTONE_URI, null); String uriString = prefs.getString(KEY_DEFAULT_ALARM_RINGTONE_URI, null); //get Settings.System.ALARM_ALERT default ringtone final Uri systemAlarmUri = RingtoneManager.getActualDefaultRingtoneUri(context, RingtoneManager.TYPE_ALARM); if (systemAlarmUri != null && systemAlarmUri.toString() != null && !systemAlarmUri.toString().equalsIgnoreCase(uriString)) { uriString = systemAlarmUri.toString(); } return uriString == null ? defaultUri : Uri.parse(uriString); } Loading @@ -136,6 +147,12 @@ final class SettingsDAO { static void setDefaultAlarmRingtoneUri(Context context, Uri uri) { final SharedPreferences prefs = getSharedPreferences(context); prefs.edit().putString(KEY_DEFAULT_ALARM_RINGTONE_URI, uri.toString()).apply(); //sync the default ringtone uri to Settings.System.ALARM_ALERT if (Settings.System.canWrite(context)) { RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_ALARM, uri); } } private static ClockStyle getClockStyle(Context context, String prefKey) { Loading src/com/android/deskclock/provider/Alarm.java +1 −1 Original line number Diff line number Diff line Loading @@ -289,7 +289,7 @@ public final class Alarm implements Parcelable, ClockContract.AlarmsColumns { if (c.isNull(RINGTONE_INDEX)) { // Should we be saving this with the current ringtone or leave it null // so it changes when user changes default ringtone? alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); alert = DataModel.getDataModel().getDefaultAlarmRingtoneUri(); } else { alert = Uri.parse(c.getString(RINGTONE_INDEX)); } Loading src/com/android/deskclock/provider/ClockDatabaseHelper.java +2 −2 Original line number Diff line number Diff line Loading @@ -60,10 +60,10 @@ class ClockDatabaseHelper extends SQLiteOpenHelper { // This creates a default alarm at 8:30 for every Mon,Tue,Wed,Thu,Fri //fixed ringtone dialog not selected any list item when first enter private static final String DEFAULT_ALARM_1 = "(8, 30, 31, 0, 1, '', 'content://media/internal/audio/media/9', 0);"; private static final String DEFAULT_ALARM_1 = "(8, 30, 31, 0, 1, '', NULL, 0);"; // This creates a default alarm at 9:30 for every Sat,Sun private static final String DEFAULT_ALARM_2 = "(9, 00, 96, 0, 1, '', 'content://media/internal/audio/media/9', 0);"; private static final String DEFAULT_ALARM_2 = "(9, 00, 96, 0, 1, '', NULL, 0);"; // Database and table names static final String DATABASE_NAME = "alarms.db"; Loading Loading
AndroidManifest.xml +2 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,8 @@ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="com.android.deskclock.worldclock.permissions.WRITE_DATABASE" /> <uses-permission android:name="org.codeaurora.permission.POWER_ON_ALERT" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> <application android:label="@string/app_label" android:name=".DeskClockApplication" Loading
src/com/android/deskclock/AlarmClockFragment.java +17 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.deskclock; import android.Manifest; import android.app.Activity; import android.app.LoaderManager; import android.content.ActivityNotFoundException; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; Loading Loading @@ -78,6 +79,7 @@ public final class AlarmClockFragment extends DeskClockFragment implements public static final int REQUEST_CODE_PERMISSIONS = 11; public static final int REQUEST_CODE_EXTERN_AUDIO = 12; public static final int REQUEST_READ_EXTERNAL_STORAGE_PERMISSION = 13; public static final int REQUEST_CODE_WRITE_SETTINGS = 14; private Uri mWaitUpdateUri; private static final String QUERY_URI = "content://com.android.deskclock/alarms"; Loading Loading @@ -288,6 +290,12 @@ public final class AlarmClockFragment extends DeskClockFragment implements updateSelectAlarmRingToneUri(uri); } break; case REQUEST_CODE_WRITE_SETTINGS: if (Settings.System.canWrite(getContext())) { DataModel.getDataModel().setDefaultAlarmRingtoneUri( Uri.parse(new_default_ringtone_Uri)); } break; default: LogUtils.w("Unhandled request code in onActivityResult: " + requestCode); } Loading Loading @@ -345,7 +353,15 @@ public final class AlarmClockFragment extends DeskClockFragment implements // Update the default ringtone for future new alarms. DataModel.getDataModel().setDefaultAlarmRingtoneUri(Uri.parse(new_default_ringtone_Uri)); if (!Settings.System.canWrite(context)) { Intent settingIntent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:" + context.getPackageName())); try { startActivityForResult(settingIntent, REQUEST_CODE_WRITE_SETTINGS); } catch (ActivityNotFoundException e) { e.printStackTrace(); } } } } Loading
src/com/android/deskclock/data/SettingsDAO.java +18 −1 Original line number Diff line number Diff line Loading @@ -18,8 +18,10 @@ package com.android.deskclock.data; import android.content.Context; import android.content.SharedPreferences; import android.media.RingtoneManager; import android.net.Uri; import android.preference.PreferenceManager; import android.provider.Settings; import com.android.deskclock.R; import com.android.deskclock.Utils; Loading Loading @@ -126,7 +128,16 @@ final class SettingsDAO { */ static Uri getDefaultAlarmRingtoneUri(Context context, Uri defaultUri) { final SharedPreferences prefs = getSharedPreferences(context); final String uriString = prefs.getString(KEY_DEFAULT_ALARM_RINGTONE_URI, null); String uriString = prefs.getString(KEY_DEFAULT_ALARM_RINGTONE_URI, null); //get Settings.System.ALARM_ALERT default ringtone final Uri systemAlarmUri = RingtoneManager.getActualDefaultRingtoneUri(context, RingtoneManager.TYPE_ALARM); if (systemAlarmUri != null && systemAlarmUri.toString() != null && !systemAlarmUri.toString().equalsIgnoreCase(uriString)) { uriString = systemAlarmUri.toString(); } return uriString == null ? defaultUri : Uri.parse(uriString); } Loading @@ -136,6 +147,12 @@ final class SettingsDAO { static void setDefaultAlarmRingtoneUri(Context context, Uri uri) { final SharedPreferences prefs = getSharedPreferences(context); prefs.edit().putString(KEY_DEFAULT_ALARM_RINGTONE_URI, uri.toString()).apply(); //sync the default ringtone uri to Settings.System.ALARM_ALERT if (Settings.System.canWrite(context)) { RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_ALARM, uri); } } private static ClockStyle getClockStyle(Context context, String prefKey) { Loading
src/com/android/deskclock/provider/Alarm.java +1 −1 Original line number Diff line number Diff line Loading @@ -289,7 +289,7 @@ public final class Alarm implements Parcelable, ClockContract.AlarmsColumns { if (c.isNull(RINGTONE_INDEX)) { // Should we be saving this with the current ringtone or leave it null // so it changes when user changes default ringtone? alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); alert = DataModel.getDataModel().getDefaultAlarmRingtoneUri(); } else { alert = Uri.parse(c.getString(RINGTONE_INDEX)); } Loading
src/com/android/deskclock/provider/ClockDatabaseHelper.java +2 −2 Original line number Diff line number Diff line Loading @@ -60,10 +60,10 @@ class ClockDatabaseHelper extends SQLiteOpenHelper { // This creates a default alarm at 8:30 for every Mon,Tue,Wed,Thu,Fri //fixed ringtone dialog not selected any list item when first enter private static final String DEFAULT_ALARM_1 = "(8, 30, 31, 0, 1, '', 'content://media/internal/audio/media/9', 0);"; private static final String DEFAULT_ALARM_1 = "(8, 30, 31, 0, 1, '', NULL, 0);"; // This creates a default alarm at 9:30 for every Sat,Sun private static final String DEFAULT_ALARM_2 = "(9, 00, 96, 0, 1, '', 'content://media/internal/audio/media/9', 0);"; private static final String DEFAULT_ALARM_2 = "(9, 00, 96, 0, 1, '', NULL, 0);"; // Database and table names static final String DATABASE_NAME = "alarms.db"; Loading