diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java index 1129e9a..a970b8a 100644 --- a/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java +++ b/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java @@ -22,6 +22,7 @@ import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceFragmentCompat; import android.support.v7.preference.PreferenceManager; import android.support.v7.preference.PreferenceScreen; +import android.support.v7.preference.SwitchPreferenceCompat; import android.view.MenuItem; import android.widget.ProgressBar; import android.widget.SeekBar; @@ -60,9 +61,12 @@ import java.util.List; public class SettingsActivity extends AppCompatSettingsThemeActivity implements PreferenceFragmentCompat.OnPreferenceDisplayDialogCallback { public static final int RESULT_STORAGE = 1; + public static final int RESULT_CALL = 2; Handler handler = new Handler(); + public static String[] PREMS = new String[]{Manifest.permission.READ_PHONE_STATE}; + public static T[] removeElement(Class c, T[] aa, int i) { List ll = Arrays.asList(aa); ll = new ArrayList<>(ll); @@ -273,6 +277,19 @@ public class SettingsActivity extends AppCompatSettingsThemeActivity implements bluetooth.setVisible(false); } bindPreferenceSummaryToValue(bluetooth); + + Preference p = pm.findPreference(MainApplication.PREFERENCE_CALL); + p.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + boolean b = (boolean) newValue; + if (b) { + if (!Storage.permitted(GeneralPreferenceFragment.this, PREMS, RESULT_CALL)) + return false; + } + return true; + } + }); } @Override @@ -295,22 +312,25 @@ public class SettingsActivity extends AppCompatSettingsThemeActivity implements @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); - StoragePathPreferenceCompat s = (StoragePathPreferenceCompat) findPreference(MainApplication.PREFERENCE_STORAGE); - switch (requestCode) { case RESULT_STORAGE: s.onRequestPermissionsResult(permissions, grantResults); break; + case RESULT_CALL: + SwitchPreferenceCompat p = (SwitchPreferenceCompat) findPreference(MainApplication.PREFERENCE_CALL); + if (!Storage.permitted(getContext(), PREMS)) + p.setChecked(false); + else + p.setChecked(true); + break; } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - StoragePathPreferenceCompat s = (StoragePathPreferenceCompat) findPreference(MainApplication.PREFERENCE_STORAGE); - switch (requestCode) { case RESULT_STORAGE: s.onActivityResult(resultCode, data);