Restore subscriptions when the app is first started
Perform a subscription list restore when the app is started for the first time. Use a preference setting to figure out if the app is freshly installed or not.
This commit is contained in:
parent
299a6e4789
commit
ffac53f9ed
@ -354,6 +354,9 @@
|
|||||||
<string name="new_episodes_count_label">Number of new episodes</string>
|
<string name="new_episodes_count_label">Number of new episodes</string>
|
||||||
<string name="in_progress_episodes_count_label">Number of episodes you have started listening to</string>
|
<string name="in_progress_episodes_count_label">Number of episodes you have started listening to</string>
|
||||||
|
|
||||||
|
<!-- OPML backup -->
|
||||||
|
<string name="backup_restored">"Restored feed subscriptions from backup"</string>
|
||||||
|
|
||||||
<!-- AntennaPodSP -->
|
<!-- AntennaPodSP -->
|
||||||
|
|
||||||
<string name="sp_apps_importing_feeds_msg">Importing subscriptions from single-purpose apps…</string>
|
<string name="sp_apps_importing_feeds_msg">Importing subscriptions from single-purpose apps…</string>
|
||||||
|
@ -4,6 +4,8 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
import android.app.SearchManager;
|
import android.app.SearchManager;
|
||||||
import android.app.SearchableInfo;
|
import android.app.SearchableInfo;
|
||||||
|
import android.app.backup.BackupManager;
|
||||||
|
import android.app.backup.RestoreObserver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
@ -22,6 +24,8 @@ import android.view.Menu;
|
|||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import de.danoeh.antennapod.AppConfig;
|
import de.danoeh.antennapod.AppConfig;
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
import de.danoeh.antennapod.feed.EventDistributor;
|
import de.danoeh.antennapod.feed.EventDistributor;
|
||||||
@ -114,6 +118,26 @@ public class MainActivity extends ActionBarActivity {
|
|||||||
updateProgressBarVisibility();
|
updateProgressBarVisibility();
|
||||||
EventDistributor.getInstance().register(contentUpdate);
|
EventDistributor.getInstance().register(contentUpdate);
|
||||||
|
|
||||||
|
// Possibly restore feed subscriptions from backup
|
||||||
|
if (UserPreferences.isFreshInstall()) {
|
||||||
|
new BackupManager(this).requestRestore(new BackupRestoreObserver(this));
|
||||||
|
UserPreferences.setIsFreshInstall(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class BackupRestoreObserver extends RestoreObserver {
|
||||||
|
private final Context mContext;
|
||||||
|
|
||||||
|
public BackupRestoreObserver(final Context context) {
|
||||||
|
mContext = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void restoreFinished(int error) {
|
||||||
|
if (error == 0) {
|
||||||
|
Toast.makeText(mContext, R.string.backup_restored, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
|
private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
|
||||||
|
@ -50,6 +50,7 @@ public class UserPreferences implements
|
|||||||
private static final String PREF_PLAYBACK_SPEED = "prefPlaybackSpeed";
|
private static final String PREF_PLAYBACK_SPEED = "prefPlaybackSpeed";
|
||||||
private static final String PREF_PLAYBACK_SPEED_ARRAY = "prefPlaybackSpeedArray";
|
private static final String PREF_PLAYBACK_SPEED_ARRAY = "prefPlaybackSpeedArray";
|
||||||
public static final String PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS = "prefPauseForFocusLoss";
|
public static final String PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS = "prefPauseForFocusLoss";
|
||||||
|
private static final String PREF_IS_FRESH_INSTALL = "prefIsFreshInstall";
|
||||||
|
|
||||||
// TODO: Make this value configurable
|
// TODO: Make this value configurable
|
||||||
private static final double PLAYED_DURATION_AUTOFLATTR_THRESHOLD = 0.8;
|
private static final double PLAYED_DURATION_AUTOFLATTR_THRESHOLD = 0.8;
|
||||||
@ -76,6 +77,7 @@ public class UserPreferences implements
|
|||||||
private String playbackSpeed;
|
private String playbackSpeed;
|
||||||
private String[] playbackSpeedArray;
|
private String[] playbackSpeedArray;
|
||||||
private boolean pauseForFocusLoss;
|
private boolean pauseForFocusLoss;
|
||||||
|
private boolean isFreshInstall;
|
||||||
|
|
||||||
private UserPreferences(Context context) {
|
private UserPreferences(Context context) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
@ -130,6 +132,7 @@ public class UserPreferences implements
|
|||||||
playbackSpeedArray = readPlaybackSpeedArray(sp.getString(
|
playbackSpeedArray = readPlaybackSpeedArray(sp.getString(
|
||||||
PREF_PLAYBACK_SPEED_ARRAY, null));
|
PREF_PLAYBACK_SPEED_ARRAY, null));
|
||||||
pauseForFocusLoss = sp.getBoolean(PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS, false);
|
pauseForFocusLoss = sp.getBoolean(PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS, false);
|
||||||
|
isFreshInstall = sp.getBoolean(PREF_IS_FRESH_INSTALL, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int readThemeValue(String valueFromPrefs) {
|
private int readThemeValue(String valueFromPrefs) {
|
||||||
@ -284,6 +287,11 @@ public class UserPreferences implements
|
|||||||
return instance.pauseForFocusLoss;
|
return instance.pauseForFocusLoss;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isFreshInstall() {
|
||||||
|
instanceAvailable();
|
||||||
|
return instance.isFreshInstall;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
|
public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
|
||||||
if (AppConfig.DEBUG)
|
if (AppConfig.DEBUG)
|
||||||
@ -334,6 +342,8 @@ public class UserPreferences implements
|
|||||||
pauseForFocusLoss = sp.getBoolean(PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS, false);
|
pauseForFocusLoss = sp.getBoolean(PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS, false);
|
||||||
} else if (key.equals(PREF_PAUSE_ON_HEADSET_DISCONNECT)) {
|
} else if (key.equals(PREF_PAUSE_ON_HEADSET_DISCONNECT)) {
|
||||||
pauseOnHeadsetDisconnect = sp.getBoolean(PREF_PAUSE_ON_HEADSET_DISCONNECT, true);
|
pauseOnHeadsetDisconnect = sp.getBoolean(PREF_PAUSE_ON_HEADSET_DISCONNECT, true);
|
||||||
|
} else if (key.equals(PREF_IS_FRESH_INSTALL)) {
|
||||||
|
isFreshInstall = sp.getBoolean(PREF_IS_FRESH_INSTALL, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -526,4 +536,11 @@ public class UserPreferences implements
|
|||||||
instanceAvailable();
|
instanceAvailable();
|
||||||
return PLAYED_DURATION_AUTOFLATTR_THRESHOLD;
|
return PLAYED_DURATION_AUTOFLATTR_THRESHOLD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setIsFreshInstall(boolean isFreshInstall) {
|
||||||
|
instanceAvailable();
|
||||||
|
PreferenceManager.getDefaultSharedPreferences(instance.context).edit()
|
||||||
|
.putBoolean(PREF_IS_FRESH_INSTALL, isFreshInstall)
|
||||||
|
.apply();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user