summaryrefslogtreecommitdiff
path: root/core/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java32
4 files changed, 33 insertions, 15 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
index 746dd43c4..78df74ee7 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
@@ -305,8 +305,10 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
if (super.compareWithOther(other)) {
return true;
}
- if(other.image != null && !TextUtils.equals(image.download_url, other.image.download_url)) {
- return true;
+ if (other.image != null) {
+ if (image == null || !TextUtils.equals(image.download_url, other.image.download_url)) {
+ return true;
+ }
}
if (!TextUtils.equals(feedTitle, other.feedTitle)) {
return true;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
index d66af22ef..a62c9d8bf 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
@@ -339,12 +339,9 @@ public class DownloadService extends Service {
}
private void setupNotificationBuilders() {
- Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.stat_notify_sync);
-
notificationCompatBuilder = new NotificationCompat.Builder(this)
.setOngoing(true)
.setContentIntent(ClientConfig.downloadServiceCallbacks.getNotificationContentIntent(this))
- .setLargeIcon(icon)
.setSmallIcon(R.drawable.stat_notify_sync);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
notificationCompatBuilder.setVisibility(Notification.VISIBILITY_PUBLIC);
@@ -511,10 +508,6 @@ public class DownloadService extends Service {
successfulDownloads, failedDownloads)
)
.setSmallIcon(R.drawable.stat_notify_sync_error)
- .setLargeIcon(
- BitmapFactory.decodeResource(getResources(),
- R.drawable.stat_notify_sync_error)
- )
.setContentIntent(
ClientConfig.downloadServiceCallbacks.getReportNotificationContentIntent(this)
)
@@ -565,7 +558,6 @@ public class DownloadService extends Service {
.setStyle(new NotificationCompat.BigTextStyle().bigText(getText(R.string.authentication_notification_msg)
+ ": " + resourceTitle))
.setSmallIcon(R.drawable.ic_stat_authentication)
- .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_stat_authentication))
.setAutoCancel(true)
.setContentIntent(ClientConfig.downloadServiceCallbacks.getAuthentificationNotificationContentIntent(DownloadService.this, downloadRequest));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
index 181a6f619..7ab0931d6 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
@@ -93,7 +93,7 @@ public class HttpDownloader extends Downloader {
// add range header if necessary
- if (fileExists) {
+ if (fileExists && destination.length() > 0) {
request.setSoFar(destination.length());
httpReq.addHeader("Range", "bytes=" + request.getSoFar() + "-");
Log.d(TAG, "Adding range header: " + request.getSoFar());
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
index 3fd46951d..5ff3f70df 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
@@ -3,7 +3,9 @@ package de.danoeh.antennapod.core.storage;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
+import android.database.DatabaseErrorHandler;
import android.database.DatabaseUtils;
+import android.database.DefaultDatabaseErrorHandler;
import android.database.MergeCursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
@@ -13,13 +15,12 @@ import android.media.MediaMetadataRetriever;
import android.text.TextUtils;
import android.util.Log;
+import java.io.File;
+import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Set;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.core.event.ProgressEvent;
@@ -35,6 +36,7 @@ import de.danoeh.antennapod.core.service.download.DownloadStatus;
import de.danoeh.antennapod.core.util.LongIntMap;
import de.danoeh.antennapod.core.util.flattr.FlattrStatus;
import de.greenrobot.event.EventBus;
+import org.apache.commons.io.FileUtils;
// TODO Remove media column from feeditem table
@@ -1644,6 +1646,28 @@ public class PodDBAdapter {
}
/**
+ * Called when a database corruption happens
+ */
+ public static class PodDbErrorHandler implements DatabaseErrorHandler {
+ @Override
+ public void onCorruption(SQLiteDatabase db) {
+ Log.e(TAG, "Database corrupted: " + db.getPath());
+
+ File dbPath = new File(db.getPath());
+ File backupFolder = PodDBAdapter.context.getExternalFilesDir(null);
+ File backupFile = new File(backupFolder, "CorruptedDatabaseBackup.db");
+ try {
+ FileUtils.copyFile(dbPath, backupFile);
+ Log.d(TAG, "Dumped database to " + backupFile.getPath());
+ } catch (IOException e) {
+ Log.d(TAG, Log.getStackTraceString(e));
+ }
+
+ new DefaultDatabaseErrorHandler().onCorruption(db); // This deletes the database
+ }
+ }
+
+ /**
* Helper class for opening the Antennapod database.
*/
private static class PodDBHelper extends SQLiteOpenHelper {
@@ -1661,7 +1685,7 @@ public class PodDBAdapter {
*/
public PodDBHelper(final Context context, final String name,
final CursorFactory factory) {
- super(context, name, factory, VERSION);
+ super(context, name, factory, VERSION, new PodDbErrorHandler());
this.context = context;
}