diff options
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.java | 54 |
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); + } +} |