summaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
authorMargaret Borowiec <malgorzata.borowiec@outlook.com>2021-01-24 14:41:55 +0000
committerGitHub <noreply@github.com>2021-01-24 15:41:55 +0100
commitcd23eccf95d1a6c7193953c3f24a2fac4f32c97f (patch)
tree7e5ae9b1b4a9be53fb6fc495b37cb1140902d835 /app/src/main/java
parentc32239be0ed0ac0b9ca44c84fb3f032a3188eb38 (diff)
downloadAntennaPod-cd23eccf95d1a6c7193953c3f24a2fac4f32c97f.zip
Google Assistant App Actions for AntennaPod (#4417)
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java59
1 files changed, 58 insertions, 1 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
index d1716e009..b04e7ec7f 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
@@ -6,6 +6,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.media.AudioManager;
+import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@@ -51,6 +52,7 @@ import de.danoeh.antennapod.fragment.FeedItemlistFragment;
import de.danoeh.antennapod.fragment.NavDrawerFragment;
import de.danoeh.antennapod.fragment.PlaybackHistoryFragment;
import de.danoeh.antennapod.fragment.QueueFragment;
+import de.danoeh.antennapod.fragment.SearchFragment;
import de.danoeh.antennapod.fragment.SubscriptionFragment;
import de.danoeh.antennapod.fragment.TransitionEffect;
import de.danoeh.antennapod.preferences.PreferenceUpgrader;
@@ -511,6 +513,8 @@ public class MainActivity extends CastEnabledActivity {
} else if (intent.getBooleanExtra(EXTRA_OPEN_PLAYER, false)) {
sheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
bottomSheetCallback.onSlide(null, 1.0f);
+ } else if (Intent.ACTION_VIEW.equals(intent.getAction())) {
+ handleDeeplink(intent.getData());
}
// to avoid handling the intent twice when the configuration changes
setIntent(new Intent(MainActivity.this, MainActivity.class));
@@ -520,6 +524,7 @@ public class MainActivity extends CastEnabledActivity {
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
+ handleNavIntent();
}
public Snackbar showSnackbarAbovePlayer(CharSequence text, int duration) {
@@ -540,6 +545,59 @@ public class MainActivity extends CastEnabledActivity {
return showSnackbarAbovePlayer(getResources().getText(text), duration);
}
+ /**
+ * Handles the deep link incoming via App Actions.
+ * Performs an in-app search or opens the relevant feature of the app
+ * depending on the query.
+ *
+ * @param uri incoming deep link
+ */
+ private void handleDeeplink(Uri uri) {
+ if (uri == null || uri.getPath() == null) {
+ return;
+ }
+ Log.d(TAG, "Handling deeplink: " + uri.toString());
+ switch (uri.getPath()) {
+ case "/deeplink/search":
+ String query = uri.getQueryParameter("query");
+ if (query == null) {
+ return;
+ }
+
+ this.loadChildFragment(SearchFragment.newInstance(query));
+ break;
+ case "/deeplink/main":
+ String feature = uri.getQueryParameter("page");
+ if (feature == null) {
+ return;
+ }
+ switch (feature) {
+ case "DOWNLOADS":
+ loadFragment(DownloadsFragment.TAG, null);
+ break;
+ case "HISTORY":
+ loadFragment(PlaybackHistoryFragment.TAG, null);
+ break;
+ case "EPISODES":
+ loadFragment(EpisodesFragment.TAG, null);
+ break;
+ case "QUEUE":
+ loadFragment(QueueFragment.TAG, null);
+ break;
+ case "SUBSCRIPTIONS":
+ loadFragment(SubscriptionFragment.TAG, null);
+ break;
+ default:
+ showSnackbarAbovePlayer(getString(R.string.app_action_not_found, feature),
+ Snackbar.LENGTH_LONG);
+ return;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
//Hardware keyboard support
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
@@ -592,5 +650,4 @@ public class MainActivity extends CastEnabledActivity {
}
return super.onKeyUp(keyCode, event);
}
-
}