【发布时间】:2015-01-24 19:56:41
【问题描述】:
我需要从 Cordova 插件类内部强制一个 Android 应用程序崩溃。
问题是插件类在单独的线程中运行,所以即使我强制使用RuntimeException(),它也只会崩溃分离的线程。
【问题讨论】:
我需要从 Cordova 插件类内部强制一个 Android 应用程序崩溃。
问题是插件类在单独的线程中运行,所以即使我强制使用RuntimeException(),它也只会崩溃分离的线程。
【问题讨论】:
如果您想从 cordova 插件崩溃应用程序/或按 android 应用程序中的菜单按钮,您必须编辑 cordova 项目中的几个类,如 how to make my phonegap android app crash? 中所述。
从 Javascript 调用一些本机函数导致崩溃:
为 Phonegap 编写一个 Android 原生插件。请参阅http://docs.phonegap.com/en/3.0.0/guide_platforms_android_plugin.md.html#Android%20Plugins 以创建插件。在执行方法中抛出异常。这将在父层处理(这就是为什么您可以在控制台中看到有关崩溃的日志),因此请进行以下更改以使应用程序崩溃。(这两个类都属于 org.apache.cordova 包)
通过此更改,我可以通过 javascript 调用使应用程序崩溃。
【讨论】:
您的插件代码应该做的是在您的未处理异常上定义处理程序,如在Rahits answer 上定义的那样。想法是附加到这样的事件(从链接的答案中借用的代码)
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread paramThread, Throwable paramThrowable) {
Log.e("Error"+Thread.currentThread().getStackTrace()[2],paramThrowable.getLocalizedMessage());
}
});
然后当回调被调用时,抛出真正的异常,从而产生预期的效果。
【讨论】: