package com.xzjmyk.pm.activity; import android.app.Activity; import android.content.Intent; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import com.afollestad.materialdialogs.MaterialDialog; import com.alibaba.fastjson.JSON; import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil; import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil; import com.xzjmyk.pm.activity.ui.erp.util.Constants; import com.xzjmyk.pm.activity.ui.erp.util.StringUtils; import com.xzjmyk.pm.activity.util.DateFormatUtil; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import cat.ereza.customactivityoncrash.CustomActivityOnCrash; /** * Created by RaoMeng on 2016/10/24. */ public class CustomCrashActivity extends Activity { private static final String TAG = "CustomCrashActivity"; private Button mRestartBtn,mCloseBtn; private ImageView mErrorIv; private AnimationDrawable animationDrawable; private Intent intent; private String stackTraceString; private String cb_code; private Handler mHandler=new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what){ case 0x11: Toast.makeText(CustomCrashActivity.this,"崩潰信息已经发送给服务器!",Toast.LENGTH_LONG).show(); break; case 0x10: Log.i(TAG, "handleMessage:" + msg.getData().getString("result")); cb_code = JSON.parseObject(msg.getData().getString("result")).getString("code"); sendDataMessage(); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_crash); mRestartBtn = (Button) findViewById(R.id.restart_btn); mCloseBtn = (Button) findViewById(R.id.close_btn); mErrorIv = (ImageView) findViewById(R.id.error_image); intent = getIntent(); // stackTraceString = CustomActivityOnCrash.getStackTraceFromIntent(intent); stackTraceString = CustomActivityOnCrash.getAllErrorDetailsFromIntent(this,intent); if (stackTraceString != null){ //Toast.makeText(this, stackTraceString, Toast.LENGTH_LONG).show(); //TODO 发布版本隐藏 new MaterialDialog.Builder(this).content(stackTraceString) .build().show(); try { getCode(); } catch (Exception e) { e.printStackTrace(); } } final Class activityClassFromIntent = CustomActivityOnCrash.getRestartActivityClassFromIntent(intent); final CustomActivityOnCrash.EventListener listenerFromIntent = CustomActivityOnCrash.getEventListenerFromIntent(intent); mRestartBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(CustomCrashActivity.this,activityClassFromIntent); CustomActivityOnCrash.restartApplicationWithIntent(CustomCrashActivity.this,intent,listenerFromIntent); } }); mCloseBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { CustomActivityOnCrash.closeApplication(CustomCrashActivity.this,listenerFromIntent); } }); } public void sendDataMessage(){ String url = "http://218.18.115.198:8888/ERP/mobile/Commentsback_mobile.action"; String emname = CommonUtil.getSharedPreferences(this, "erp_emname"); if (StringUtils.isEmpty(emname)) { emname = MyApplication.getInstance().mLoginUser.getNickName().trim(); } String formStore = "{\n" + " \"cb_code\":\"" + cb_code + "\",\n" + " \"cb_company\":\"" + CommonUtil.getSharedPreferences(this, "erp_commpany") + "\",\n" + " \"cb_whichsys\":\"" + CommonUtil.getSharedPreferences(this, "erp_master") + "\",\n" + " \"cb_kind\":\"问题\",\n" + " \"cb_text\":\"" +stackTraceString + "\",\n" + " \"cb_date\":\"" + DateFormatUtil.getStrDate4Date(new Date(), "yyyy-MM-dd HH:mm:ss") + "\",\n" + " \"cb_person\":\"" + emname + "\",\n" + " \"cb_tel\":\"" + MyApplication.getInstance().mLoginUser.getTelephone() + "\",\n" + "}\n"; Map params = new HashMap<>(); params.put("formStore", formStore); params.put("master", "USOFTSYS"); params.put("caller", "Commentsback_mobile"); LinkedHashMap headers = new LinkedHashMap<>(); headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(this, "sessionId")); ViewUtil.httpSendRequest(this, url, params, mHandler, headers, 0x11, null, null, "post"); } private void getCode() { String url = Constants.getAppBaseUrl(this) + "common/getCodeString.action"; Map params = new HashMap<>(); params.put("caller", "Commentsback_mobile"); params.put("type", 2); LinkedHashMap headers = new LinkedHashMap<>(); headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(this, "sessionId")); ViewUtil.httpSendRequest(this, url, params, mHandler, headers, 0x10, null, null, "post"); } }