0

在我的 Android 应用程序中,我需要管理自定义 Activity 类中所有未捕获的异常。现在我在这里遇到问题,我无法从内部启动 Activity。即使 Activity 没有开始,也没有例外。

public class MyActivity extends Activity {
    Context context;
    Throwable throwable;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        context=getApplicationContext();
        final AlertDialog.Builder builder= new AlertDialog.Builder(this);

        Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {

            @Override
            public void uncaughtException(Thread thread, Throwable ex) {
                throwable=ex;
                new Thread(){
                    @Override
                    public void run() {
                        Looper.prepare();

                        builder.setTitle("Warning...!");
                        builder.create();
                        builder.setNegativeButton("Close", new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                finish();

                            }
                        });
                        builder.setPositiveButton("More Details", new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Intent intent= new Intent(MyActivity.this,Report.class);
                                intent.putExtra("error", throwable);
                                startActivity(intent);

                            }
                        });
                        builder.setMessage(throwable.getMessage());
                        builder.show();
                        Looper.loop();
                    }
                }.start();  
            }
        });
    }
}
4

3 回答 3

0

你需要改变这条线

startActivity(intent);

经过

context.startActivity(intent);
于 2012-07-10T04:20:23.297 回答
0

从我搜索的内容来看,您似乎无法ActivityUncaughtExceptionHandler. 您最多可以显示一条Toast消息。

Toast.makeText(app, "Some message", Toast.LENGTH_SHORT).show();
于 2014-09-12T12:48:55.127 回答
-1

这段代码对我来说很好用。

注意:2 seconds在我定义了未捕获的异常代码之后需要加载新的活动。

只需将下面的代码放在 Activity 的 onCreate 方法中

Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(){

        @Override
        public void uncaughtException(Thread thread, Throwable ex) {
        AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, intent);
        System.exit(2); 
        startActivity(new Intent(CurrentActivity.this,TargetActivity.class));
    }
    });

如果您对此有任何麻烦,请告诉我!!

于 2012-07-09T06:48:57.650 回答