начать деятельность в пользовательском классе UncaughtExceptionHandler, который больше не работает - PullRequest
0 голосов
/ 17 марта 2019

Я использовал для обработки ошибок исключений этим классом и передавал ошибку как String в другое действие для шоу, но этот способ больше не работает, кажется, когда произошел процесс kill "sag.class" Деятельность больше не может запускаться

public class ExceptionHandler extends MainActivity implements java.lang.Thread.UncaughtExceptionHandler {

    private final Context myContext;

    private SharedPreferences prefs;

    private StringBuilder errorReport;

    public ExceptionHandler(Context context) {
        myContext = context;
    }

    public void uncaughtException(Thread thread, Throwable exception) {



        StringWriter stackTrace = new StringWriter();
        exception.printStackTrace(new PrintWriter(stackTrace));
        System.err.println(stackTrace);

        exception.printStackTrace(new PrintWriter(stackTrace));
        errorReport = new StringBuilder();
        errorReport.append("************ CAUSE OF ERROR ************\n\n");
        errorReport.append(stackTrace.toString());

        errorReport.append("\n************ DEVICE INFORMATION ***********\n");

        errorReport.append(LINE_SEPARATOR);
        errorReport.append("Product: ");
        errorReport.append(Build.PRODUCT);
        errorReport.append(LINE_SEPARATOR);
        errorReport.append("\n************ FIRMWARE ************\n");
        errorReport.append("SDK: ");
        errorReport.append(Build.VERSION.SDK);
        errorReport.append(LINE_SEPARATOR);
        errorReport.append("Release: ");
        errorReport.append(Build.VERSION.RELEASE);
        errorReport.append(LINE_SEPARATOR);
        errorReport.append("Incremental: ");
        errorReport.append(Build.VERSION.INCREMENTAL);
        errorReport.append(LINE_SEPARATOR);


        errorReport.append("App Version: ");
        try {
            errorReport.append(myContext.getApplicationContext().getPackageManager().getPackageInfo(myContext.getPackageName(), 0).versionName);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        errorReport.append(LINE_SEPARATOR);


        prefs = myContext.getSharedPreferences("MyPrefsFile", MODE_PRIVATE);

        if (prefs.contains("access_token"))
        {
            errorReport.append(prefs.getString("fname","")+" "+prefs.getString("lname",""));
        }


        Intent intent = new Intent(myContext, sag.class);
        intent.putExtra("error", errorReport.toString());
        myContext.startActivity(intent);

        Process.killProcess(Process.myPid());
        System.exit(10);

    }


}

так как можно начать деятельность в классе UncaughtExceptionHandler новым способом?

1 Ответ

0 голосов
/ 18 марта 2019

попробуйте, пожалуйста, добавьте этот код, чтобы начать новую деятельность

Intent startAppIntent = new Intent(this, sag.class);
        startAppIntent.putExtra("error", errorReport.toString());
        startAppIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startAppIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startAppIntent);
        System.exit(1);

вы можете изменить this на myContext, если this не работает. Пожалуйста, дайте нам знать, если этот код работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...