package com.gh.base; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.NonNull; import com.gh.common.util.DialogUtils; import com.gh.common.util.PackageUtils; import com.gh.common.util.RunningUtils; import com.gh.common.util.ShareUtils; import com.gh.common.util.StringUtils; import com.gh.gamecenter.DataUtils; import com.gh.gamecenter.LoginActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBShowDialog; import com.lightgame.download.FileUtils; import com.lightgame.utils.Utils; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import org.json.JSONException; import org.json.JSONObject; import java.lang.ref.WeakReference; import java.util.List; import butterknife.ButterKnife; import pub.devrel.easypermissions.EasyPermissions; import static com.gh.common.util.EntranceUtils.KEY_DATA; import static com.gh.common.util.EntranceUtils.KEY_ENTRANCE; public abstract class BaseActivity extends BaseToolBarActivity implements EasyPermissions.PermissionCallbacks { protected String mEntrance; private boolean mIsPause; protected final Handler mBaseHandler = new BaseHandler(this); protected static class BaseHandler extends Handler { private final WeakReference mActivityWeakReference; BaseHandler(BaseActivity activity) { mActivityWeakReference = new WeakReference<>(activity); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); mActivityWeakReference.get().handleMessage(msg); } } protected void handleMessage(Message msg) { } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().register(this); ButterKnife.bind(this); mEntrance = getIntent().getStringExtra(KEY_ENTRANCE); if (getIntent().getBundleExtra(KEY_DATA) != null) { mEntrance = getIntent().getBundleExtra(KEY_DATA).getString(KEY_ENTRANCE); } } @Override protected void onDestroy() { EventBus.getDefault().unregister(this); mBaseHandler.removeCallbacksAndMessages(null); super.onDestroy(); } @Override protected boolean onNavigationIconClicked() { onBackPressed(); return true; } public void toast(String msg) { Utils.toast(this, msg); } public void toast(int msg) { toast(getString(msg)); } public void showShare(String url, String icon, String shareTitle, String shareSummary, ShareUtils.ShareType shareType) { ShareUtils.getInstance(this).showShareWindows(getWindow().getDecorView(), url, icon, shareTitle, shareSummary, shareType); if (shareType == ShareUtils.ShareType.game || shareType == ShareUtils.ShareType.plugin) { DataUtils.onEvent(this, "内容分享", shareTitle + shareSummary); } else { DataUtils.onEvent(this, "内容分享", shareTitle); } } @Subscribe(threadMode = ThreadMode.MAIN) public void onEventMainThread(final EBShowDialog showDialog) { //TODO 改为缓存到UI可见时才调用,参考beier-assist Lifecycle组件 if (!mIsPause && this.getClass().getName().equals(RunningUtils.getTopActivity(this))) { if ("hijack".equals(showDialog.getType())) { DialogUtils.showQqSessionDialog(this, "2586716223");// 建议用户联系客服 } else if ("plugin".equals(showDialog.getType())) { DialogUtils.showPluginDialog(this, new DialogUtils.ConfirmListener() { @Override public void onConfirm() { if (FileUtils.isEmptyFile(showDialog.getPath())) { toast(getString(R.string.install_failure_hint)); } else { startActivity(PackageUtils.getUninstallIntent(BaseActivity.this, showDialog.getPath())); } } }); } else if ("loginException".equals(showDialog.getType())) { try { JSONObject object = new JSONObject(showDialog.getPath()); JSONObject device = object.getJSONObject("device"); String manufacturer = device.getString("manufacturer"); String model = device.getString("model"); DialogUtils.showAlertDialog(this, "你的账号已在另外一台设备登录" , StringUtils.buildString("(", manufacturer, " - ", model, ")") , "知道了", "重新登录" , null, new DialogUtils.CancelListener() { @Override public void onCancel() { startActivity(LoginActivity.getIntent(BaseActivity.this)); } }); } catch (JSONException e) { e.printStackTrace(); } } } } @Override protected void onPause() { super.onPause(); mIsPause = true; } @Override protected void onResume() { super.onResume(); mIsPause = false; } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } @Override public void onPermissionsDenied(int requestCode, List perms) { } @Override public void onPermissionsGranted(int requestCode, List perms) { } }