package com.dl7.mvp.widget; import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; import com.dl7.mvp.utils.SDCardUtils; import com.dl7.mvp.utils.StringUtils; import com.github.angads25.filepicker.view.FilePickerPreference; import java.io.File; /** * Created by long on 2016/9/30. * 对 FilePickerPreference 做一些修改 */ public class XFilePickerPreference extends FilePickerPreference { public XFilePickerPreference(Context context) { super(context); } public XFilePickerPreference(Context context, AttributeSet attrs) { super(context, attrs); } public XFilePickerPreference(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected Object onGetDefaultValue(TypedArray a, int index) { String dir = a.getString(index); File rootDirectory = SDCardUtils.getRootDirectory(); if (rootDirectory != null && dir != null) { File defaultDir = new File(rootDirectory, dir); if (!defaultDir.exists()) { defaultDir.mkdirs(); } else if (!defaultDir.isDirectory()) { defaultDir.delete(); defaultDir.mkdirs(); } return defaultDir.getAbsolutePath(); } return super.onGetDefaultValue(a, index); } @Override public void onSelectedFilePaths(String[] files) { if (files == null || files.length == 0) { return; } // 这里改成只取第一项 String dFiles = StringUtils.replaceFilePath(files[0]); if (isPersistent()) { persistString(dFiles); } try { getOnPreferenceChangeListener().onPreferenceChange(this, dFiles); } catch (NullPointerException e) { e.printStackTrace(); } } @Override protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) { if (defaultValue != null && defaultValue instanceof String) { if (isPersistent()) { persistString(defaultValue.toString()); } } else { super.onSetInitialValue(restorePersistedValue, defaultValue); } } }