package com.dreamspace.uucampus.ui.activity.Personal; import android.content.Intent; import android.view.View; import android.widget.Button; import android.widget.RelativeLayout; import com.dreamspace.uucampus.R; import com.dreamspace.uucampus.api.ApiManager; import com.dreamspace.uucampus.common.utils.NetUtils; import com.dreamspace.uucampus.common.utils.PreferenceUtils; import com.dreamspace.uucampus.model.api.DeleteAccessTokenRes; import com.dreamspace.uucampus.ui.activity.Login.LoginActivity; import com.dreamspace.uucampus.ui.base.AbsActivity; import com.dreamspace.uucampus.ui.dialog.ProgressDialog; import com.umeng.update.UmengUpdateAgent; import com.umeng.update.UmengUpdateListener; import com.umeng.update.UpdateResponse; import com.umeng.update.UpdateStatus; import butterknife.Bind; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; /** * Created by Lx on 2015/10/15. */ public class SettingAct extends AbsActivity { @Bind(R.id.check_update_rl) RelativeLayout updateRl; @Bind(R.id.logout_btn) Button logoutBtn; @Bind(R.id.about_rl) RelativeLayout aboutRl; private boolean actDestroy = false; private static final int LOGIN = 1; private ProgressDialog progressDialog; @Override protected int getContentView() { return R.layout.activity_setting; } @Override protected void prepareDatas() { } @Override protected void initViews() { getSupportActionBar().setTitle(getResources().getString(R.string.setting)); aboutRl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { readyGo(AboutAct.class); } }); if (!PreferenceUtils.hasKey(this, PreferenceUtils.Key.LOGIN) || !PreferenceUtils.getBoolean(this, PreferenceUtils.Key.LOGIN)) { //未登录 initNoLoginViewsAndEvent(); } else { initLoginViewsAndEvent(); } initListeners(); } @Override protected View getLoadingTargetView() { return null; } private void initListeners() { UmengUpdateAgent.setUpdateAutoPopup(false); UmengUpdateAgent.setUpdateListener(new UmengUpdateListener() { @Override public void onUpdateReturned(int updateStatus, UpdateResponse updateResponse) { if(progressDialog != null){ progressDialog.dismiss(); } switch (updateStatus) { case UpdateStatus.Yes: // has update UmengUpdateAgent.showUpdateDialog(SettingAct.this,updateResponse); break; case UpdateStatus.No: // has no update showToast(getString(R.string.newest_version)); break; case UpdateStatus.NoneWifi: // none wifi // Toast.makeText(mContext, "没有wifi连接, 只在wifi下更新", Toast.LENGTH_SHORT).show(); break; case UpdateStatus.Timeout: // time out showToast("超时"); break; } } }); updateRl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(!NetUtils.isNetworkAvailable(SettingAct.this)){ showNetWorkError(); return; } initProgressDialog(); progressDialog.show(); UmengUpdateAgent.forceUpdate(SettingAct.this); } }); } private void logout() { if (!NetUtils.isNetworkConnected(this)) { logoutOnNetErrorEnvir(); return; } ApiManager.getService(this).deleteAccessToken(new Callback<DeleteAccessTokenRes>() { @Override public void success(DeleteAccessTokenRes deleteAccessTokenRes, Response response) { if (deleteAccessTokenRes != null && !actDestroy) { //登出,修改preference PreferenceUtils.putString(SettingAct.this, PreferenceUtils.Key.ACCESS, "guest"); PreferenceUtils.putBoolean(SettingAct.this, PreferenceUtils.Key.LOGIN, false); setResult(RESULT_OK); finish(); } } @Override public void failure(RetrofitError error) { logoutOnNetErrorEnvir(); } }); } //无网环境或者请求错误的情况下登出 private void logoutOnNetErrorEnvir() { PreferenceUtils.putString(this, PreferenceUtils.Key.ACCESS, ""); PreferenceUtils.putBoolean(SettingAct.this, PreferenceUtils.Key.LOGIN, false); setResult(RESULT_OK); finish(); } //未登录 private void initNoLoginViewsAndEvent() { logoutBtn.setVisibility(View.INVISIBLE); } //登录后 private void initLoginViewsAndEvent() { logoutBtn.setVisibility(View.VISIBLE); logoutBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { logout(); } }); } private void initProgressDialog(){ if(progressDialog != null){ return; } progressDialog = new ProgressDialog(this); progressDialog.setContent(getString(R.string.checking_update)); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == LOGIN && resultCode == RESULT_OK) { initLoginViewsAndEvent(); } } @Override protected void onDestroy() { actDestroy = true; super.onDestroy(); } @Override public void onBackPressed() { setResult(RESULT_OK); super.onBackPressed(); } }