package com.example.android.foldercamera; import android.app.Activity; import android.content.ClipData; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.Build; import android.os.Environment; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceCategory; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.preference.PreferenceScreen; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import com.nononsenseapps.filepicker.FilePickerActivity; import java.util.List; public class Settings extends PreferenceActivity { private final int CODE_DIRETORY_PICKER = 1; ListPreference listPreference; Preference directoryPicker; SharedPreferences preferences; Intent return_data = new Intent(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); preferences = getPreferenceManager().getDefaultSharedPreferences(this); listPreference = (ListPreference) findPreference(getResources().getString(R.string.pref_resolution_key)); // setupListPreference(); setupDirectoryPickerPreference(); setResult(Activity.RESULT_CANCELED); } private void setupDirectoryPickerPreference(){ directoryPicker = findPreference(getResources().getString(R.string.pref_default_directory)); String path = preferences.getString(directoryPicker.getKey(), Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString()); directoryPicker.setSummary(path); directoryPicker.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Intent i = new Intent(getApplicationContext(), FilePickerActivity.class); i.putExtra(FilePickerActivity.EXTRA_MODE, FilePickerActivity.MODE_DIR); startActivityForResult(i, CODE_DIRETORY_PICKER); return true; } }); } SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener(){ @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals(listPreference.getKey())){ setResult(Activity.RESULT_OK); } } }; @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CODE_DIRETORY_PICKER && resultCode == Activity.RESULT_OK) { SharedPreferences.Editor editor = directoryPicker.getEditor(); String path = data.getData().getPath(); directoryPicker.setSummary(path); editor.putString(directoryPicker.getKey(), path); editor.commit(); } } }