package cn.koolcloud.ipos.appstore.ui; import org.json.JSONObject; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.view.KeyEvent; import android.widget.RelativeLayout; import android.widget.Toast; import cn.koolcloud.ipos.appstore.AppStorePreference; import cn.koolcloud.ipos.appstore.R; import cn.koolcloud.ipos.appstore.api.ApiService; import cn.koolcloud.ipos.appstore.constant.Constants; import cn.koolcloud.ipos.appstore.entity.ResultSet; import cn.koolcloud.ipos.appstore.interfaces.CallBack; import cn.koolcloud.ipos.appstore.utils.JsonUtils; import cn.koolcloud.ipos.appstore.utils.Logger; import cn.koolcloud.ipos.appstore.utils.NetUtil; import cn.koolcloud.ipos.appstore.utils.PushUtils; import cn.koolcloud.ipos.appstore.utils.ToastUtil; import com.baidu.android.pushservice.PushManager; public class SplashActivity extends BaseActivity { public static final String NETWORK_AVAILABLE_KEY = "is_network_available"; private final int CURRENT_PAGE_SLEEP_TIME = 2500; private RelativeLayout rootLayout; private long delayMillis = 2000; private static final int SHOW_TOAST = 1; private static final int GO_TO_MAIN_PAGE = 2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Logger.d("-----onCreate-------"); activityList.add(this); setContentView(R.layout.loading); checkNetwork(); initViews(); boolean isOpenPush = AppStorePreference.getPushNotificationTag(application); if (isOpenPush) { PushUtils.logStringCache = PushUtils.getLogText(getApplicationContext()); PushUtils.loginBaiduCloud(getApplicationContext()); } else { PushManager.stopWork(getApplicationContext()); } } private void initViews() { rootLayout = (RelativeLayout) findViewById(R.id.rootLayout); } /** * @Title: checkNetwork * @Description: check network * @param * @return void * @throws */ private void checkNetwork() { //network is ok if (NetUtil.isAvailable(getApplicationContext())) { String terminalId = AppStorePreference.getTerminalID(getApplicationContext()); if (TextUtils.isEmpty(terminalId)) { String userId = AppStorePreference.getUserID(getApplicationContext()); String channelId = AppStorePreference.getChannelId(getApplicationContext()); registerClient(userId, channelId); } else { new JumpToMainActivity().start(); } } else { ToastUtil.showToast(getApplicationContext(), R.string.dialog_network_not_available, Toast.LENGTH_LONG); new JumpToMainActivity().start(); } } private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case SHOW_TOAST: Toast.makeText(SplashActivity.this, msg.arg1, Toast.LENGTH_SHORT).show(); break; case GO_TO_MAIN_PAGE: //clear apps table cache /*CacheDB cacheDB = CacheDB.getInstance(getApplicationContext()); cacheDB.clearAppTableData(); AppStorePreference.saveTerminaID(getApplicationContext(), String.valueOf(msg.obj));*/ gotoMainActivity(); break; default: break; } } }; public void registerClient(String userId, String channelId) { ApiService.register(this, userId, channelId, registerCallBack); } private CallBack registerCallBack = new CallBack() { @Override public void onCancelled() { } @Override public void onStart() { } @Override public void onSuccess(JSONObject jsonObj) { try { String retCode = ""; String data = ""; Logger.d("-------getRegisterInfo=" + jsonObj.toString()); retCode = JsonUtils.getStringValue(jsonObj, Constants.REQUEST_STATUS); data = JsonUtils.getStringValue(jsonObj, Constants.REQUEST_DATA); /*if (!Constants.REQUEST_STATUS_OK.equals(retCode)) { onFailure(data); } else { if (TextUtils.isEmpty(data)) { onFailure(Utils.getResourceString(getApplicationContext(), R.string.nonetwork_prompt_server_error)); } else { client = JsonUtils.parseJSONClient(jsonObj); } }*/ if (retCode.equals(Constants.REQUEST_STATUS_FORBIDDEN)) { ToastUtil.showToast(getApplicationContext(), R.string.msg_pos_forbiden, Toast.LENGTH_LONG); exit(); } JSONObject dataJson = JsonUtils.getJSONObject(jsonObj, Constants.REQUEST_DATA); String terminalId = JsonUtils.getStringValue(dataJson, Constants.JSON_KEY_TERMINAL_ID); AppStorePreference.saveTerminaID(getApplicationContext(), terminalId); new JumpToMainActivity().start(); } catch (Exception e) { onFailure("get client register response error!"); } } @Override public void onFailure(String msg) { Logger.d("describe=" + msg); if (msg.contains(ResultSet.NET_ERROR.describe)) { new JumpToMainActivity().start(); ToastUtil.showToast(getApplicationContext(), R.string.nonetwork_prompt_server_error, Toast.LENGTH_LONG); } } }; @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { // ((AppStoreApplication) application).exit(); android.os.Process.killProcess(android.os.Process.myPid()); } return super.onKeyDown(keyCode, event); } /*@Override protected void onDestroy() { activityList.remove(this); super.onDestroy(); System.gc(); }*/ @Override public void finish() { super.finish(); } /** * @Title: gotoMainActivity * @Description: TODO go to main page * @param * @return void * @throws */ private void gotoMainActivity() { /*try { //delay execute invoke refresh data set Thread.currentThread().sleep(CURRENT_PAGE_SLEEP_TIME); } catch (InterruptedException e) { e.printStackTrace(); }*/ Intent intent = new Intent(SplashActivity.this, MainFrameActivity.class); startActivity(intent); finish(); } class JumpToMainActivity extends Thread { @Override public void run() { mHandler.sendEmptyMessageDelayed(GO_TO_MAIN_PAGE, CURRENT_PAGE_SLEEP_TIME); } } }