package org.aisen.weibo.sina.ui.fragment.settings; import android.Manifest; import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceManager; import android.util.Log; import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.MaterialDialog; import org.aisen.android.common.context.GlobalContext; import org.aisen.android.common.setting.SettingUtility; import org.aisen.android.common.utils.ActivityHelper; import org.aisen.android.support.action.IAction; import org.aisen.android.support.permissions.APermissionsAction; import org.aisen.android.ui.activity.basic.BaseActivity; import org.aisen.weibo.sina.R; import org.aisen.weibo.sina.base.AppSettings; import org.aisen.weibo.sina.base.MyApplication; import org.aisen.weibo.sina.support.utils.AisenUtils; import org.aisen.weibo.sina.ui.activity.publish.PublishActivity; /** * 其他 * * @author wangdan * */ public class OtherItemFragment extends VersionSettingsFragment implements OnPreferenceClickListener , OnPreferenceChangeListener { public static BasePreferenceFragment newInstance() { return new OtherItemFragment(); } private Preference pAppFeedback;// 用户反馈 private Preference pAbout; private Preference pFeedback; private Preference pOpensource;// 开源协议 private Preference pGithub;// Github private CheckBoxPreference pScreenRotate;// 屏幕旋转 private CheckBoxPreference pDisableCache;// 禁用缓存 private CheckBoxPreference pCrashLog;// Crash日志上报 private CheckBoxPreference pNetworkDelay;// 网络请求延迟 private ListPreference pCacheValidity;// 业务数据有效期 @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); addPreferencesFromResource(R.xml.ui_about_item); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(GlobalContext.getInstance()); pFeedback = (Preference) findPreference("pFeedback"); if (pFeedback != null) pFeedback.setOnPreferenceClickListener(this); pAbout = (Preference) findPreference("pAbout"); pAbout.setOnPreferenceClickListener(this); // Preference pHelp = (Preference) findPreference("pHelp"); // pHelp.setOnPreferenceClickListener(this); pScreenRotate = (CheckBoxPreference) findPreference("pScreenRotate"); pScreenRotate.setOnPreferenceChangeListener(this); pDisableCache = (CheckBoxPreference) findPreference("pDisableCache"); pDisableCache.setOnPreferenceChangeListener(this); pCrashLog = (CheckBoxPreference) findPreference("pCrashLog"); pCrashLog.setOnPreferenceChangeListener(this); pNetworkDelay = (CheckBoxPreference) findPreference("pNetworkDelay"); pNetworkDelay.setOnPreferenceChangeListener(this); pOpensource = (Preference) findPreference("pOpensource"); pOpensource.setOnPreferenceClickListener(this); pGithub = (Preference) findPreference("pGithub"); pGithub.setOnPreferenceClickListener(this); // 缓存有效期 pCacheValidity = (ListPreference) findPreference("pCacheValidity"); pCacheValidity.setOnPreferenceChangeListener(this); pCacheValidity.setEnabled(!AppSettings.isDisableCache()); int value = Integer.parseInt(prefs.getString("pCacheValidity", "1")); setListSetting(value, R.array.pCacheValidity, pCacheValidity); pAppFeedback = (Preference) findPreference("pAppFeedback"); pAppFeedback.setOnPreferenceClickListener(this); } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if ("pScreenRotate".equals(preference.getKey())) { if (Boolean.parseBoolean(newValue.toString())) getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); else getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } else if ("pDisableCache".equals(preference.getKey())) { pCacheValidity.setEnabled(!Boolean.parseBoolean(newValue.toString())); } else if ("pCacheValidity".equals(preference.getKey())) { setListSetting(Integer.parseInt(newValue.toString()), R.array.pCacheValidity, pCacheValidity); } else if ("pNetworkDelay".equals(preference.getKey())) { SettingUtility.setPermanentSetting("http_delay", Boolean.parseBoolean(newValue.toString()) ? 10 * 1000 : 0); } else if ("pCrashLog".equals(preference.getKey())) { if (Boolean.parseBoolean(newValue.toString())) { checkPhotoPermission(((BaseActivity) getActivity()), false); } } return true; } @Override public boolean onPreferenceClick(Preference preference) { if ("pFeedback".equals(preference.getKey())) { PublishActivity.publishFeedback(getActivity()); } else if ("pAbout".equals(preference.getKey())) { AboutWebFragment.launchAbout(getActivity()); } else if ("pHelp".equals(preference.getKey())) { AboutWebFragment.launchHelp(getActivity()); } else if ("pOpensource".equals(preference.getKey())) { AboutWebFragment.launchOpensource(getActivity()); } else if ("pGithub".equals(preference.getKey())) { AisenUtils.launchBrowser(getActivity(), "https://github.com/wangdan/AisenWeiBo"); } else if ("pAppFeedback".equals(preference.getKey())) { PublishActivity.publishFeedback(getActivity()); } return super.onPreferenceClick(preference); } // private void setLanguage(int value) { // String[] valueTitleArr = getResources().getStringArray(R.array.pLanguage); // // pLanguage.setSummary(valueTitleArr[value]); // } public static void checkPhotoPermission(final BaseActivity activity, final boolean shownever) { APermissionsAction permissionsAction = new APermissionsAction(activity, null, activity.getActivityHelper(), Manifest.permission.CALL_PHONE) { @Override protected void onPermissionDenied(boolean alwaysDenied) { if (alwaysDenied) { if (shownever && ActivityHelper.getBooleanShareData(GlobalContext.getInstance(), "donot_crash_remind", false)) { return; } MaterialDialog.Builder builder = new MaterialDialog.Builder(activity) .forceStacking(true) .content(R.string.crash_hint) .negativeText(R.string.crash_settings) .onPositive(new MaterialDialog.SingleButtonCallback() { @Override public void onClick(MaterialDialog dialog, DialogAction which) { ActivityHelper.putBooleanShareData(GlobalContext.getInstance(), "donot_crash_remind", true); } }) .onNegative(new MaterialDialog.SingleButtonCallback() { @Override public void onClick(MaterialDialog dialog, DialogAction which) { AisenUtils.gotoSettings(activity); } }); if (shownever) builder.positiveText(R.string.donnot_remind); builder.show(); } } }; // 开启日志上报 new IAction(activity, permissionsAction) { @Override public void doAction() { Log.d("Main", "setupCrash"); ((MyApplication) GlobalContext.getInstance()).setupCrash(); } }.run(); } }