package com.itap.voiceemoticon.activity; import org.tadpoleframework.app.LoadDialog; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.widget.Toast; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.itap.voiceemoticon.MsgDef; import com.itap.voiceemoticon.R; import com.itap.voiceemoticon.weibo.WeiboLoginAcountManager; import com.itap.voiceemoticon.weibo.WeiboLoginWebView; import com.weibo.sdk.android.Oauth2AccessToken; import com.weibo.sdk.android.sso.SsoHandler; public class LoginActivity extends SherlockFragmentActivity{ private static final String TAG = "LoginActivity"; private static final String KEY_AUTO_LOGIN = "auto_login"; private static final String KEY_TOKEN = "token"; private static final String KEY_MESSAGE = "message"; static final long SPLASH_TIME = 2000; private WeiboLoginWebView mWebView; private Oauth2AccessToken mToken; private Message mMessage = null; private Handler mHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (msg.what == MsgDef.MSG_DIALOG_SHOW) { showLoadDialog(); } if (MsgDef.MSG_DIALOG_HIDE == msg.what) { hideLoadDialog(); } if (MsgDef.MSG_LOGIN_FINISH == msg.what) { setResult(RESULT_OK); finish(); } return false; } }); public void sendMessage(int what) { mHandler.sendEmptyMessage(what); } private void showLoadDialog() { final LoadDialog loadDialog = mLoadDialog; try { loadDialog.show(); } catch (Exception e) { e.printStackTrace(); } } private void hideLoadDialog() { final LoadDialog loadDialog = mLoadDialog; try { loadDialog.hide(); } catch (Exception e) { e.printStackTrace(); } } /** * Use Explicit Intent start Activity * * @param activity * @param uid */ public static void start(Activity activity, Message message) { Intent intent = new Intent(); intent.setClass(activity, LoginActivity.class); intent.putExtra(KEY_MESSAGE, message); activity.startActivity(intent); } public static void startActivityForResult(Activity activity, int requestCode, Message message) { Intent intent = new Intent(); intent.setClass(activity, LoginActivity.class); intent.putExtra(KEY_MESSAGE, message); activity.startActivityForResult(intent, requestCode); } /** * Use Explicit Intent start Activity * * @param activity * @param uid */ public static void startWithOutAutoLogin(Activity activity, Message message) { Intent intent = new Intent(); intent.setClass(activity, LoginActivity.class); intent.putExtra(KEY_AUTO_LOGIN, false); intent.putExtra(KEY_MESSAGE, message); activity.startActivity(intent); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); mLoadDialog = new LoadDialog(this); Intent intent = getIntent(); boolean autoLogin = intent.getBooleanExtra(KEY_AUTO_LOGIN, true); mToken = (Oauth2AccessToken) intent.getSerializableExtra(KEY_TOKEN); mMessage = (Message) intent.getParcelableExtra(KEY_MESSAGE); if (mToken == null) { mToken = WeiboLoginAcountManager.getInstance().getLastLoginAccessToken(); } if (autoLogin && null != mToken && mToken.isSessionValid()) { finish(); } else { if (null != mToken && !mToken.isSessionValid()) { Toast.makeText(this, "登录失败,请重新登录", Toast.LENGTH_LONG); } } mWebView = (WeiboLoginWebView) findViewById(R.id.webview); mWebView.setTag(mMessage); mWebView.login(); } private SsoHandler mSsoHandler = null; private LoadDialog mLoadDialog = null; @Override public void finish() { super.finish(); hideLoadDialog(); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); } protected void onSaveInstanceState(Bundle outState) { } }