add basic in progress Notification to DownloaderService

This is super basic, really just a placeholder to have something there. It
should be replaced with something much better as part of the UX overhaul.

#601 https://gitlab.com/fdroid/fdroidclient/issues/601
This commit is contained in:
Hans-Christoph Steiner 2016-04-06 09:23:06 +02:00
parent 77e041d640
commit adcdc417ab

View File

@ -29,10 +29,13 @@ import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.PatternMatcher; import android.os.PatternMatcher;
import android.os.Process; import android.os.Process;
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.LocalBroadcastManager; import android.support.v4.content.LocalBroadcastManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.SanitizedFile; import org.fdroid.fdroid.data.SanitizedFile;
@ -72,6 +75,8 @@ public class DownloaderService extends Service {
private static final String ACTION_QUEUE = "org.fdroid.fdroid.net.DownloaderService.action.QUEUE"; private static final String ACTION_QUEUE = "org.fdroid.fdroid.net.DownloaderService.action.QUEUE";
private static final String ACTION_CANCEL = "org.fdroid.fdroid.net.DownloaderService.action.CANCEL"; private static final String ACTION_CANCEL = "org.fdroid.fdroid.net.DownloaderService.action.CANCEL";
private static final int NOTIFY_DOWNLOADING = 0x2344;
private volatile Looper serviceLooper; private volatile Looper serviceLooper;
private static volatile ServiceHandler serviceHandler; private static volatile ServiceHandler serviceHandler;
private static volatile Downloader downloader; private static volatile Downloader downloader;
@ -87,7 +92,6 @@ public class DownloaderService extends Service {
@Override @Override
public void handleMessage(Message msg) { public void handleMessage(Message msg) {
Log.i(TAG, "handleMessage " + msg);
handleIntent((Intent) msg.obj); handleIntent((Intent) msg.obj);
stopSelf(msg.arg1); stopSelf(msg.arg1);
} }
@ -128,6 +132,9 @@ public class DownloaderService extends Service {
Log.e(TAG, "CANCEL called on something not queued or running: " + startId + " " + intent); Log.e(TAG, "CANCEL called on something not queued or running: " + startId + " " + intent);
} }
} else if (ACTION_QUEUE.equals(intent.getAction())) { } else if (ACTION_QUEUE.equals(intent.getAction())) {
if (Preferences.get().isUpdateNotificationEnabled()) {
createNotification(intent.getDataString());
}
Log.i(TAG, "Queued " + intent); Log.i(TAG, "Queued " + intent);
Message msg = serviceHandler.obtainMessage(); Message msg = serviceHandler.obtainMessage();
msg.arg1 = startId; msg.arg1 = startId;
@ -141,6 +148,16 @@ public class DownloaderService extends Service {
} }
} }
private void createNotification(String urlString) {
NotificationCompat.Builder builder =
new NotificationCompat.Builder(this)
.setAutoCancel(true)
.setContentTitle(getString(R.string.downloading))
.setSmallIcon(android.R.drawable.stat_sys_download)
.setContentText(urlString);
startForeground(NOTIFY_DOWNLOADING, builder.build());
}
@Override @Override
public int onStartCommand(Intent intent, int flags, int startId) { public int onStartCommand(Intent intent, int flags, int startId) {
onStart(intent, startId); onStart(intent, startId);
@ -151,6 +168,7 @@ public class DownloaderService extends Service {
@Override @Override
public void onDestroy() { public void onDestroy() {
Log.i(TAG, "onDestroy"); Log.i(TAG, "onDestroy");
stopForeground(true);
serviceLooper.quit(); //NOPMD - this is copied from IntentService, no super call needed serviceLooper.quit(); //NOPMD - this is copied from IntentService, no super call needed
} }