Directly enable notifications when permission was granted (#7336)
This commit is contained in:
parent
eff3208b86
commit
02ec30e7e2
@ -107,14 +107,15 @@ public class FeedSettingsFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class FeedSettingsPreferenceFragment extends PreferenceFragmentCompat {
|
public static class FeedSettingsPreferenceFragment extends PreferenceFragmentCompat {
|
||||||
private static final CharSequence PREF_EPISODE_FILTER = "episodeFilter";
|
private static final String PREF_EPISODE_FILTER = "episodeFilter";
|
||||||
private static final CharSequence PREF_SCREEN = "feedSettingsScreen";
|
private static final String PREF_SCREEN = "feedSettingsScreen";
|
||||||
private static final CharSequence PREF_AUTHENTICATION = "authentication";
|
private static final String PREF_AUTHENTICATION = "authentication";
|
||||||
private static final CharSequence PREF_AUTO_DELETE = "autoDelete";
|
private static final String PREF_AUTO_DELETE = "autoDelete";
|
||||||
private static final CharSequence PREF_CATEGORY_AUTO_DOWNLOAD = "autoDownloadCategory";
|
private static final String PREF_CATEGORY_AUTO_DOWNLOAD = "autoDownloadCategory";
|
||||||
private static final CharSequence PREF_NEW_EPISODES_ACTION = "feedNewEpisodesAction";
|
private static final String PREF_NEW_EPISODES_ACTION = "feedNewEpisodesAction";
|
||||||
private static final String PREF_FEED_PLAYBACK_SPEED = "feedPlaybackSpeed";
|
private static final String PREF_FEED_PLAYBACK_SPEED = "feedPlaybackSpeed";
|
||||||
private static final String PREF_AUTO_SKIP = "feedAutoSkip";
|
private static final String PREF_AUTO_SKIP = "feedAutoSkip";
|
||||||
|
private static final String PREF_NOTIFICATION = "episodeNotification";
|
||||||
private static final String PREF_TAGS = "tags";
|
private static final String PREF_TAGS = "tags";
|
||||||
|
|
||||||
private Feed feed;
|
private Feed feed;
|
||||||
@ -130,9 +131,12 @@ public class FeedSettingsFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolean notificationPermissionDenied = false;
|
boolean notificationPermissionDenied = false;
|
||||||
private final ActivityResultLauncher<String> requestPermissionLauncher =
|
private final ActivityResultLauncher<String> enableNotificationsRequestPermissionLauncher =
|
||||||
registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {
|
registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {
|
||||||
if (isGranted) {
|
if (isGranted) {
|
||||||
|
SwitchPreferenceCompat pref = findPreference(PREF_NOTIFICATION);
|
||||||
|
pref.setChecked(true);
|
||||||
|
pref.callChangeListener(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (notificationPermissionDenied) {
|
if (notificationPermissionDenied) {
|
||||||
@ -506,16 +510,16 @@ public class FeedSettingsFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setupEpisodeNotificationPreference() {
|
private void setupEpisodeNotificationPreference() {
|
||||||
SwitchPreferenceCompat pref = findPreference("episodeNotification");
|
SwitchPreferenceCompat pref = findPreference(PREF_NOTIFICATION);
|
||||||
|
|
||||||
pref.setChecked(feedPreferences.getShowEpisodeNotification());
|
pref.setChecked(feedPreferences.getShowEpisodeNotification());
|
||||||
pref.setOnPreferenceChangeListener((preference, newValue) -> {
|
pref.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||||
if (Build.VERSION.SDK_INT >= 33 && ContextCompat.checkSelfPermission(getContext(),
|
boolean checked = Boolean.TRUE.equals(newValue);
|
||||||
|
if (checked && Build.VERSION.SDK_INT >= 33 && ContextCompat.checkSelfPermission(getContext(),
|
||||||
Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
|
Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
|
||||||
requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS);
|
enableNotificationsRequestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
boolean checked = Boolean.TRUE.equals(newValue);
|
|
||||||
feedPreferences.setShowEpisodeNotification(checked);
|
feedPreferences.setShowEpisodeNotification(checked);
|
||||||
DBWriter.setFeedPreferences(feedPreferences);
|
DBWriter.setFeedPreferences(feedPreferences);
|
||||||
pref.setChecked(checked);
|
pref.setChecked(checked);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user