diff options
author | ByteHamster <ByteHamster@users.noreply.github.com> | 2023-10-29 16:10:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-29 16:10:38 +0100 |
commit | 4931734d94a30d4b9b83c13a7869fc84bbf22a11 (patch) | |
tree | 2c5ca755f771abda555b3ca12523ffda96639354 /app/src/main/java/de/danoeh/antennapod/activity | |
parent | 8a011badd3253dde83769ec9dc3be3129528e4b7 (diff) | |
download | AntennaPod-4931734d94a30d4b9b83c13a7869fc84bbf22a11.zip |
Allow hiding notification permission nag (#6730)
- Support showing most error messages as a snackbar
- Ask for notification permission when enabling episode notifications
- Clarify what we use notifications for
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/activity')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java | 28 | ||||
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java | 15 |
2 files changed, 42 insertions, 1 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java index b101c20c0..6202f62da 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java @@ -4,6 +4,7 @@ import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.provider.Settings; +import android.util.Log; import android.view.MenuItem; import android.view.View; @@ -17,9 +18,11 @@ import androidx.preference.PreferenceFragmentCompat; import com.bytehamster.lib.preferencesearch.SearchPreferenceResult; import com.bytehamster.lib.preferencesearch.SearchPreferenceResultListener; +import com.google.android.material.snackbar.Snackbar; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.preferences.ThemeSwitcher; import de.danoeh.antennapod.databinding.SettingsActivityBinding; +import de.danoeh.antennapod.event.MessageEvent; import de.danoeh.antennapod.fragment.preferences.AutoDownloadPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.ImportExportPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.MainPreferencesFragment; @@ -29,6 +32,9 @@ import de.danoeh.antennapod.fragment.preferences.PlaybackPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.synchronization.SynchronizationPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.SwipePreferencesFragment; import de.danoeh.antennapod.fragment.preferences.UserInterfacePreferencesFragment; +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; /** * PreferenceActivity for API 11+. In order to change the behavior of the preference UI, see @@ -162,4 +168,26 @@ public class PreferenceActivity extends AppCompatActivity implements SearchPrefe result.highlight(fragment); } } + + @Override + protected void onStart() { + super.onStart(); + EventBus.getDefault().register(this); + } + + @Override + protected void onStop() { + super.onStop(); + EventBus.getDefault().unregister(this); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEventMainThread(MessageEvent event) { + Log.d(FRAGMENT_TAG, "onEvent(" + event + ")"); + Snackbar s = Snackbar.make(binding.getRoot(), event.message, Snackbar.LENGTH_LONG); + if (event.action != null) { + s.setAction(event.actionText, v -> event.action.accept(this)); + } + s.show(); + } } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java index fe5eb369c..e3473937e 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -32,9 +32,11 @@ import android.widget.SeekBar; import androidx.annotation.Nullable; import androidx.interpolator.view.animation.FastOutSlowInInterpolator; import com.bumptech.glide.Glide; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import de.danoeh.antennapod.R; import de.danoeh.antennapod.dialog.MediaPlayerErrorDialog; import de.danoeh.antennapod.dialog.VariableSpeedDialog; +import de.danoeh.antennapod.event.MessageEvent; import de.danoeh.antennapod.event.playback.BufferUpdateEvent; import de.danoeh.antennapod.event.playback.PlaybackPositionEvent; import de.danoeh.antennapod.event.PlayerErrorEvent; @@ -85,7 +87,7 @@ public class VideoplayerActivity extends CastEnabledActivity implements SeekBar. private boolean videoSurfaceCreated = false; private boolean destroyingDueToReload = false; private long lastScreenTap = 0; - private Handler videoControlsHider = new Handler(Looper.getMainLooper()); + private final Handler videoControlsHider = new Handler(Looper.getMainLooper()); private VideoplayerActivityBinding viewBinding; private PlaybackController controller; private boolean showTimeLeft = false; @@ -516,6 +518,17 @@ public class VideoplayerActivity extends CastEnabledActivity implements SeekBar. MediaPlayerErrorDialog.show(this, event); } + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEventMainThread(MessageEvent event) { + Log.d(TAG, "onEvent(" + event + ")"); + final MaterialAlertDialogBuilder errorDialog = new MaterialAlertDialogBuilder(this); + errorDialog.setMessage(event.message); + if (event.action != null) { + errorDialog.setPositiveButton(event.actionText, (dialog, which) -> event.action.accept(this)); + } + errorDialog.show(); + } + @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); |