package com.wyp.materialqqlite.ui; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.os.Handler; import android.os.Message; import android.widget.Toast; import com.wyp.materialqqlite.AppData; import com.wyp.materialqqlite.JsEngine; import com.wyp.materialqqlite.LoginAccountInfo; import com.wyp.materialqqlite.LoginAccountList; import com.wyp.materialqqlite.QQService; import com.wyp.materialqqlite.R; import com.wyp.materialqqlite.qqclient.QQClient; import com.wyp.materialqqlite.qqclient.protocol.protocoldata.QQCallBackMsg; import com.wyp.materialqqlite.qqclient.protocol.protocoldata.QQLoginResultCode; public class SplashActivity extends Activity { private QQClient m_QQClient; private LoginAccountList m_accountList; private Handler m_hService = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (2 == msg.what) { // 已经登录则直接进主窗口 showMainActivity(3*1000); } else if (1 == msg.what) { // 初始化成功 LoginAccountInfo account = m_accountList.getLastLoginAccountInfo(); if (account != null && account.m_bAutoLogin) { // 有默认帐号则直接登录 m_QQClient.setCallBackHandler(m_Handler); m_QQClient.setUser(account.m_strUser, account.m_strPwd); m_QQClient.setLoginStatus(account.m_nStatus); m_QQClient.login(); } else { // 否则跳转到登录窗口 showLoginActivity(3*1000); } } else { // 初始化失败 Toast.makeText(getBaseContext(), R.string.qqservice_init_err, Toast.LENGTH_LONG).show(); m_QQClient.setNullCallBackHandler(m_Handler); QQService.stopQQService(SplashActivity.this); finish(); } } }; private Handler m_Handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case QQCallBackMsg.LOGIN_RESULT: if (msg.arg1 == QQLoginResultCode.SUCCESS) { // 登录成功 showMainActivity(0); } else if (msg.arg1 == QQLoginResultCode.FAILED) { // 登录失败 Toast.makeText(getBaseContext(), R.string.login_failed, Toast.LENGTH_LONG).show(); showLoginActivity(0); } else if (msg.arg1 == QQLoginResultCode.PASSWORD_ERROR) { // 密码错误 Toast.makeText(getBaseContext(), R.string.id_or_pwd_err, Toast.LENGTH_LONG).show(); showLoginActivity(0); } else if (msg.arg1 == QQLoginResultCode.NEED_VERIFY_CODE || msg.arg1 == QQLoginResultCode.VERIFY_CODE_ERROR) { // 需要输入验证码 showVerifyCodeActivity(0); } break; default: break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); JsEngine jsEngine = new JsEngine(this); AppData.getAppData().setJsEngine(jsEngine); m_QQClient = AppData.getAppData().getQQClient(); m_accountList = AppData.getAppData().getLoginAccountList(); QQService.startQQService(this, m_hService); } @Override protected void onDestroy(){ super.onDestroy(); m_QQClient.setNullCallBackHandler(m_Handler); } private void showMainActivity(long delayMillis) { Runnable runnable = new Runnable() { @Override public void run() { m_QQClient.setNullCallBackHandler(m_Handler); startActivity(new Intent(SplashActivity.this, MainActivity.class)); finish(); } }; Handler handler = new Handler(); handler.postDelayed(runnable, delayMillis); } private void showLoginActivity(long delayMillis) { Runnable runnable = new Runnable() { @Override public void run() { m_QQClient.setNullCallBackHandler(m_Handler); Intent intent = new Intent(SplashActivity.this, LoginActivity.class); LoginAccountInfo account = m_accountList.getLastLoginAccountInfo(); if (account != null) { Bundle bundle = new Bundle(); bundle.putString("qq_num", account.m_strUser); bundle.putString("qq_pwd", account.m_strPwd); intent.putExtras(bundle); } startActivity(intent); finish(); } }; Handler handler = new Handler(); handler.postDelayed(runnable, delayMillis); } private void showVerifyCodeActivity(long delayMillis) { Runnable runnable = new Runnable() { @Override public void run() { m_QQClient.setNullCallBackHandler(m_Handler); startActivity(new Intent(SplashActivity.this, VerifyCodeActivity.class)); finish(); } }; Handler handler = new Handler(); handler.postDelayed(runnable, delayMillis); } }