99import android .os .Bundle ;
1010import android .preference .Preference ;
1111import android .preference .PreferenceFragment ;
12+ import android .preference .SwitchPreference ;
13+ import android .util .Log ;
1214import android .widget .Toast ;
1315
16+ import java .util .Arrays ;
1417import java .util .List ;
1518
19+ import androidx .annotation .NonNull ;
1620import androidx .annotation .Nullable ;
1721import app .gwo .safenhancer .lite .util .Settings ;
22+ import moe .shizuku .redirectstorage .StorageRedirectManager ;
1823
1924public final class SettingsActivity extends BaseActivity {
2025
@@ -48,13 +53,18 @@ public static final class SettingsFragment extends PreferenceFragment {
4853 private static final String KEY_HANDLED_APPS_CHOOSE = "handled_apps_choose" ;
4954 private static final String KEY_ABOUT_VERSION = "version" ;
5055 private static final String KEY_ABOUT_GITHUB = "github" ;
56+ private static final String KEY_SR_API_PERMISSION = "sr_api_permission" ;
57+
58+ private static final int REQUEST_CODE_SR_PERMISSION = 1 ;
5159
5260 private Preference mHandledAppsChoose ;
61+ private SwitchPreference mSRPermission ;
5362
5463 @ Override
5564 public void onCreate (@ Nullable Bundle savedInstanceState ) {
5665 super .onCreate (savedInstanceState );
5766 addPreferencesFromResource (R .xml .settings_screen );
67+ PackageManager pm = getActivity ().getPackageManager ();
5868
5969 findPreference (KEY_PREFERRED_CAMERA_CLEAR ).setOnPreferenceClickListener (p -> {
6070 Settings .getInstance ().setPreferredCamera (null );
@@ -72,8 +82,31 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
7282 });
7383 updateHandledAppsSummary ();
7484
85+ mSRPermission = (SwitchPreference ) findPreference (KEY_SR_API_PERMISSION );
86+ mSRPermission .setOnPreferenceChangeListener ((pref , newValue ) -> {
87+ boolean newBool = (boolean ) newValue ;
88+ if (newBool ) {
89+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .M ) {
90+ requestPermissions (new String [] {
91+ StorageRedirectManager .PERMISSION
92+ }, REQUEST_CODE_SR_PERMISSION );
93+ }
94+ } else {
95+ // TODO Jump to settings
96+ }
97+ return false ;
98+ });
99+ mSRPermission .setEnabled (
100+ Build .VERSION .SDK_INT >= Build .VERSION_CODES .M &&
101+ StorageRedirectManager .installed (pm )
102+ );
103+ mSRPermission .setChecked (
104+ Build .VERSION .SDK_INT >= Build .VERSION_CODES .M &&
105+ getActivity ().checkSelfPermission (StorageRedirectManager .PERMISSION )
106+ == PackageManager .PERMISSION_GRANTED
107+ );
108+
75109 Preference versionPref = findPreference (KEY_ABOUT_VERSION );
76- PackageManager pm = getActivity ().getPackageManager ();
77110 String version = "Unknown" ;
78111 try {
79112 PackageInfo pi = pm .getPackageInfo (getActivity ().getPackageName (), 0 );
@@ -111,6 +144,17 @@ private void updateHandledAppsSummary(int count) {
111144 R .string .handled_apps_choose_apps_summary , count ));
112145 }
113146
147+ @ Override
148+ public void onRequestPermissionsResult (int requestCode ,
149+ @ NonNull String [] permissions ,
150+ @ NonNull int [] grantResults ) {
151+ if (REQUEST_CODE_SR_PERMISSION == requestCode ) {
152+ if (StorageRedirectManager .PERMISSION .equals (permissions [0 ]) &&
153+ grantResults [0 ] == PackageManager .PERMISSION_GRANTED ) {
154+ mSRPermission .setChecked (true );
155+ }
156+ }
157+ }
114158 }
115159
116160}
0 commit comments