From 5ed2475ac39a4d64b9a29a3298a9a5c236e20805 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Tue, 29 Jul 2014 20:51:58 -0700 Subject: Revert 7e88ccbb4ee8c500efa81b2cabe6c0c83a557806 SyncRequest seems to be uncancellable, thus unusable for my purposes --- .../dsub/activity/SubsonicFragmentActivity.java | 38 +++++++++- src/github/daneren2005/dsub/util/SyncUtil.java | 88 ---------------------- 2 files changed, 36 insertions(+), 90 deletions(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java b/src/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java index 5dba07f1..feec5149 100644 --- a/src/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java +++ b/src/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java @@ -63,7 +63,6 @@ import github.daneren2005.dsub.util.BackgroundTask; import github.daneren2005.dsub.util.Constants; import github.daneren2005.dsub.util.FileUtil; import github.daneren2005.dsub.util.SilentBackgroundTask; -import github.daneren2005.dsub.util.SyncUtil; import github.daneren2005.dsub.util.UserUtil; import github.daneren2005.dsub.util.Util; import github.daneren2005.dsub.view.ChangeLog; @@ -301,7 +300,7 @@ public class SubsonicFragmentActivity extends SubsonicActivity { } } - SyncUtil.createAccounts(this); + createAccount(); executorService = Executors.newSingleThreadScheduledExecutor(); executorService.scheduleWithFixedDelay(runnable, 0L, 1000L, TimeUnit.MILLISECONDS); @@ -490,6 +489,41 @@ public class SubsonicFragmentActivity extends SubsonicActivity { editor.commit(); } + private void createAccount() { + final Context context = this; + + new SilentBackgroundTask(this) { + @Override + protected Void doInBackground() throws Throwable { + AccountManager accountManager = (AccountManager) context.getSystemService(ACCOUNT_SERVICE); + Account account = new Account(Constants.SYNC_ACCOUNT_NAME, Constants.SYNC_ACCOUNT_TYPE); + accountManager.addAccountExplicitly(account, null, null); + + SharedPreferences prefs = Util.getPreferences(context); + boolean syncEnabled = prefs.getBoolean(Constants.PREFERENCES_KEY_SYNC_ENABLED, true); + int syncInterval = Integer.parseInt(prefs.getString(Constants.PREFERENCES_KEY_SYNC_INTERVAL, "60")); + + // Add enabled/frequency to playlist/podcasts syncing + ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY, syncEnabled); + ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY, new Bundle(), 60L * syncInterval); + ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY, syncEnabled); + ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY, new Bundle(), 60L * syncInterval); + + // Add for starred/recently added + ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_STARRED_AUTHORITY, (syncEnabled && prefs.getBoolean(Constants.PREFERENCES_KEY_SYNC_STARRED, false))); + ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_STARRED_AUTHORITY, new Bundle(), 60L * syncInterval); + ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_MOST_RECENT_AUTHORITY, (syncEnabled && prefs.getBoolean(Constants.PREFERENCES_KEY_SYNC_MOST_RECENT, false))); + ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_MOST_RECENT_AUTHORITY, new Bundle(), 60L * syncInterval); + return null; + } + + @Override + protected void done(Void result) { + + } + }.execute(); + } + private void showInfoDialog() { if (!infoDialogDisplayed) { infoDialogDisplayed = true; diff --git a/src/github/daneren2005/dsub/util/SyncUtil.java b/src/github/daneren2005/dsub/util/SyncUtil.java index 83d8554a..15fa2d47 100644 --- a/src/github/daneren2005/dsub/util/SyncUtil.java +++ b/src/github/daneren2005/dsub/util/SyncUtil.java @@ -1,16 +1,9 @@ package github.daneren2005.dsub.util; -import android.accounts.Account; -import android.accounts.AccountManager; import android.app.NotificationManager; import android.app.PendingIntent; -import android.content.ContentResolver; import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; -import android.content.SyncRequest; -import android.os.Build; -import android.os.Bundle; import android.support.v4.app.NotificationCompat; import java.io.File; @@ -30,87 +23,6 @@ public final class SyncUtil { private static ArrayList syncedPodcasts; private static String url; - public static void createAccounts(final Context context) { - new SilentBackgroundTask(context) { - @Override - protected Void doInBackground() throws Throwable { - SharedPreferences prefs = Util.getPreferences(context); - boolean syncEnabled = prefs.getBoolean(Constants.PREFERENCES_KEY_SYNC_ENABLED, true); - long syncInterval = Integer.parseInt(prefs.getString(Constants.PREFERENCES_KEY_SYNC_INTERVAL, "60")) * 60L; - boolean starred = syncEnabled && prefs.getBoolean(Constants.PREFERENCES_KEY_SYNC_STARRED, false); - boolean recent = syncEnabled && prefs.getBoolean(Constants.PREFERENCES_KEY_SYNC_MOST_RECENT, false); - - AccountManager accountManager = (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE); - Account account = new Account(Constants.SYNC_ACCOUNT_NAME, Constants.SYNC_ACCOUNT_TYPE); - accountManager.addAccountExplicitly(account, null, null); - - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - createAccountsImpl(context, account, syncEnabled, syncInterval, starred, recent); - } else { - createAccountsLegacy(context, account, syncEnabled, syncInterval, starred, recent); - } - return null; - } - - @Override - protected void done(Void result) { - - } - }.execute(); - } - - private static void createAccountsImpl(Context context, Account account, boolean syncEnabled, long syncInterval, boolean starred, boolean recent) { - // Set wiggle room at 10% instead of default 4%, doesn't really matter when it executes - long wiggleRoom = syncInterval / 10; - boolean wifiRequired = Util.getPreferences(context).getBoolean(Constants.PREFERENCES_KEY_SYNC_WIFI, true); - - ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY, syncEnabled); - SyncRequest playlistRequest = new SyncRequest.Builder() - .setSyncAdapter(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY) - .syncPeriodic(syncInterval, wiggleRoom) - .setDisallowMetered(wifiRequired) - .build(); - ContentResolver.requestSync(playlistRequest); - - ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY, syncEnabled); - SyncRequest podcastRequest = new SyncRequest.Builder() - .setSyncAdapter(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY) - .syncPeriodic(syncInterval, wiggleRoom) - .setDisallowMetered(wifiRequired) - .build(); - ContentResolver.requestSync(podcastRequest); - - // Add for starred/recently added - ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_STARRED_AUTHORITY, starred); - SyncRequest starredRequest = new SyncRequest.Builder() - .setSyncAdapter(account, Constants.SYNC_ACCOUNT_STARRED_AUTHORITY) - .syncPeriodic(syncInterval, wiggleRoom) - .setDisallowMetered(wifiRequired) - .build(); - ContentResolver.requestSync(starredRequest); - - ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_MOST_RECENT_AUTHORITY, recent); - SyncRequest recentRequest = new SyncRequest.Builder() - .setSyncAdapter(account, Constants.SYNC_ACCOUNT_MOST_RECENT_AUTHORITY) - .syncPeriodic(syncInterval, wiggleRoom) - .setDisallowMetered(wifiRequired) - .build(); - ContentResolver.requestSync(recentRequest); - } - private static void createAccountsLegacy(Context context, Account account, boolean syncEnabled, long syncInterval, boolean starred, boolean recent) { - // Add enabled/frequency to playlist/podcasts syncing - ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY, syncEnabled); - ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_PLAYLIST_AUTHORITY, new Bundle(), syncInterval); - ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY, syncEnabled); - ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_PODCAST_AUTHORITY, new Bundle(), syncInterval); - - // Add for starred/recently added - ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_STARRED_AUTHORITY, starred); - ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_STARRED_AUTHORITY, new Bundle(), syncInterval); - ContentResolver.setSyncAutomatically(account, Constants.SYNC_ACCOUNT_MOST_RECENT_AUTHORITY, recent); - ContentResolver.addPeriodicSync(account, Constants.SYNC_ACCOUNT_MOST_RECENT_AUTHORITY, new Bundle(), syncInterval); - } - private static void checkRestURL(Context context) { int instance = Util.getActiveServer(context); String newURL = Util.getRestUrl(context, null, instance, false); -- cgit v1.2.3