From e1145f16f2b49b07d6a74d3ebe1fe6e22095ec3b Mon Sep 17 00:00:00 2001 From: Harshal Lele Date: Sat, 25 Jan 2020 22:30:49 +0530 Subject: [PATCH 1/4] ask for display over other apps permission in settings --- .../settings/VideoAudioSettingsFragment.java | 56 +++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + 2 files changed, 57 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java index 9bbdd650d..64ff23140 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java @@ -1,12 +1,68 @@ package org.schabi.newpipe.settings; +import android.content.SharedPreferences; +import android.os.Build; import android.os.Bundle; +import android.provider.Settings; +import android.view.View; + +import androidx.annotation.Nullable; + +import com.google.android.material.snackbar.Snackbar; import org.schabi.newpipe.R; +import org.schabi.newpipe.util.PermissionHelper; public class VideoAudioSettingsFragment extends BasePreferenceFragment { + + private SharedPreferences.OnSharedPreferenceChangeListener listener; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + listener = new SharedPreferences.OnSharedPreferenceChangeListener() { + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { + if(s.equals(getString(R.string.minimize_on_exit_key))){ + String newSetting = sharedPreferences.getString(s,null); + if(newSetting != null){ + if(newSetting.equals(getString(R.string.minimize_on_exit_popup_key))){ + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(getContext())){ + Snackbar.make(getListView(),R.string.permission_display_over_apps,Snackbar.LENGTH_INDEFINITE) + .setAction(R.string.settings, new View.OnClickListener() { + @Override + public void onClick(View view) { + PermissionHelper.checkSystemAlertWindowPermission(getContext()); + } + }) + .show(); + + } + } + } + } + } + }; + } + + + @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { addPreferencesFromResource(R.xml.video_audio_settings); } + + @Override + public void onResume() { + super.onResume(); + getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(listener); + + } + + @Override + public void onPause() { + super.onPause(); + getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(listener); + } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e1b2cc0a4..2d69ea402 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -227,6 +227,7 @@ Using default tabs, error while reading saved tabs Restore defaults Do you want to restore the defaults? + Give permission to display over other apps Sorry, that should not have happened. Guru Meditation. From 1f24c186146c17f6fe5e140539cc7e56b2266062 Mon Sep 17 00:00:00 2001 From: Harshal Lele Date: Tue, 28 Jan 2020 20:14:35 +0530 Subject: [PATCH 2/4] reformatted and commented code --- .../newpipe/settings/VideoAudioSettingsFragment.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java index 64ff23140..86b04c4a7 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java @@ -24,11 +24,18 @@ public class VideoAudioSettingsFragment extends BasePreferenceFragment { listener = new SharedPreferences.OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { + + //on M and above, if user chooses to minimise to popup player on exit and the app doesn't have + //display over other apps permission, show a snackbar to let the user give permission if(s.equals(getString(R.string.minimize_on_exit_key))){ + String newSetting = sharedPreferences.getString(s,null); if(newSetting != null){ + if(newSetting.equals(getString(R.string.minimize_on_exit_popup_key))){ + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(getContext())){ + Snackbar.make(getListView(),R.string.permission_display_over_apps,Snackbar.LENGTH_INDEFINITE) .setAction(R.string.settings, new View.OnClickListener() { @Override From a78762756a68b8db5fd711f461e53b8aed0a3c48 Mon Sep 17 00:00:00 2001 From: Harshal Lele Date: Tue, 28 Jan 2020 20:54:24 +0530 Subject: [PATCH 3/4] reformatted code --- .../settings/VideoAudioSettingsFragment.java | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java index 86b04c4a7..6d32fb39f 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java @@ -27,29 +27,27 @@ public class VideoAudioSettingsFragment extends BasePreferenceFragment { //on M and above, if user chooses to minimise to popup player on exit and the app doesn't have //display over other apps permission, show a snackbar to let the user give permission - if(s.equals(getString(R.string.minimize_on_exit_key))){ + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && + s.equals(getString(R.string.minimize_on_exit_key))){ String newSetting = sharedPreferences.getString(s,null); - if(newSetting != null){ + if(newSetting != null + && newSetting.equals(getString(R.string.minimize_on_exit_popup_key)) + && !Settings.canDrawOverlays(getContext())){ - if(newSetting.equals(getString(R.string.minimize_on_exit_popup_key))){ + Snackbar.make(getListView(),R.string.permission_display_over_apps,Snackbar.LENGTH_INDEFINITE) + .setAction(R.string.settings, new View.OnClickListener() { + @Override + public void onClick(View view) { + PermissionHelper.checkSystemAlertWindowPermission(getContext()); + } + }) + .show(); - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(getContext())){ - - Snackbar.make(getListView(),R.string.permission_display_over_apps,Snackbar.LENGTH_INDEFINITE) - .setAction(R.string.settings, new View.OnClickListener() { - @Override - public void onClick(View view) { - PermissionHelper.checkSystemAlertWindowPermission(getContext()); - } - }) - .show(); - - } - } } } } + }; } From f7203d4ac9666c1eee10374210c2f92ec50a2eba Mon Sep 17 00:00:00 2001 From: TobiGr Date: Sat, 1 Feb 2020 13:41:03 +0100 Subject: [PATCH 4/4] Fix formatting and use lamda functions --- .../settings/VideoAudioSettingsFragment.java | 35 +++++++------------ 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java b/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java index 6d32fb39f..7bb931309 100644 --- a/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java +++ b/app/src/main/java/org/schabi/newpipe/settings/VideoAudioSettingsFragment.java @@ -21,38 +21,29 @@ public class VideoAudioSettingsFragment extends BasePreferenceFragment { public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - listener = new SharedPreferences.OnSharedPreferenceChangeListener() { - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { + listener = (sharedPreferences, s) -> { - //on M and above, if user chooses to minimise to popup player on exit and the app doesn't have - //display over other apps permission, show a snackbar to let the user give permission - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && - s.equals(getString(R.string.minimize_on_exit_key))){ + // on M and above, if user chooses to minimise to popup player on exit and the app doesn't have + // display over other apps permission, show a snackbar to let the user give permission + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && + s.equals(getString(R.string.minimize_on_exit_key))) { - String newSetting = sharedPreferences.getString(s,null); - if(newSetting != null - && newSetting.equals(getString(R.string.minimize_on_exit_popup_key)) - && !Settings.canDrawOverlays(getContext())){ + String newSetting = sharedPreferences.getString(s, null); + if (newSetting != null + && newSetting.equals(getString(R.string.minimize_on_exit_popup_key)) + && !Settings.canDrawOverlays(getContext())) { - Snackbar.make(getListView(),R.string.permission_display_over_apps,Snackbar.LENGTH_INDEFINITE) - .setAction(R.string.settings, new View.OnClickListener() { - @Override - public void onClick(View view) { - PermissionHelper.checkSystemAlertWindowPermission(getContext()); - } - }) - .show(); + Snackbar.make(getListView(), R.string.permission_display_over_apps, Snackbar.LENGTH_INDEFINITE) + .setAction(R.string.settings, + view -> PermissionHelper.checkSystemAlertWindowPermission(getContext())) + .show(); - } } } - }; } - @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { addPreferencesFromResource(R.xml.video_audio_settings);