summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/spa/SPAReceiver.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/spa/SPAReceiver.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/spa/SPAReceiver.java54
1 files changed, 54 insertions, 0 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/spa/SPAReceiver.java b/app/src/main/java/de/danoeh/antennapod/spa/SPAReceiver.java
new file mode 100644
index 000000000..e91192164
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/spa/SPAReceiver.java
@@ -0,0 +1,54 @@
+package de.danoeh.antennapod.spa;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.text.TextUtils;
+import android.util.Log;
+import android.widget.Toast;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.ClientConfigurator;
+import de.danoeh.antennapod.net.download.serviceinterface.FeedUpdateManager;
+import de.danoeh.antennapod.storage.database.FeedDatabaseWriter;
+import de.danoeh.antennapod.model.feed.Feed;
+
+/**
+ * Receives intents from AntennaPod Single Purpose apps
+ */
+public class SPAReceiver extends BroadcastReceiver{
+ private static final String TAG = "SPAReceiver";
+
+ public static final String ACTION_SP_APPS_QUERY_FEEDS = "de.danoeh.antennapdsp.intent.SP_APPS_QUERY_FEEDS";
+ private static final String ACTION_SP_APPS_QUERY_FEEDS_REPSONSE = "de.danoeh.antennapdsp.intent.SP_APPS_QUERY_FEEDS_RESPONSE";
+ private static final String ACTION_SP_APPS_QUERY_FEEDS_REPSONSE_FEEDS_EXTRA = "feeds";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (!TextUtils.equals(intent.getAction(), ACTION_SP_APPS_QUERY_FEEDS_REPSONSE)) {
+ return;
+ }
+ Log.d(TAG, "Received SP_APPS_QUERY_RESPONSE");
+ if (!intent.hasExtra(ACTION_SP_APPS_QUERY_FEEDS_REPSONSE_FEEDS_EXTRA)) {
+ Log.e(TAG, "Received invalid SP_APPS_QUERY_RESPONSE: Contains no extra");
+ return;
+ }
+ String[] feedUrls = intent.getStringArrayExtra(ACTION_SP_APPS_QUERY_FEEDS_REPSONSE_FEEDS_EXTRA);
+ if (feedUrls == null) {
+ Log.e(TAG, "Received invalid SP_APPS_QUERY_REPSONSE: extra was null");
+ return;
+ }
+ Log.d(TAG, "Received feeds list: " + Arrays.toString(feedUrls));
+ ClientConfigurator.initialize(context);
+ for (String url : feedUrls) {
+ Feed feed = new Feed(url, null, "Unknown podcast");
+ feed.setItems(Collections.emptyList());
+ FeedDatabaseWriter.updateFeed(context, feed, false);
+ }
+ Toast.makeText(context, R.string.sp_apps_importing_feeds_msg, Toast.LENGTH_LONG).show();
+ FeedUpdateManager.getInstance().runOnce(context);
+ }
+}