如何从 Cordova 插件 class 强制 Android 应用程序崩溃?

How to force a crash of Android app, from a Cordova plug-in class?

我需要从 Cordova 插件 class 中强制 Android 应用程序崩溃。

问题是插件 class 在一个单独的线程中运行,所以即使我强制执行 RuntimeException(),它也只是在单独的线程中崩溃。

您的插件代码应该做的是为 Rahits answer 中定义的未处理异常定义处理程序。想法是附加到这样的事件(代码从链接的答案中借用)

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
  public void uncaughtException(Thread paramThread, Throwable paramThrowable) {
    Log.e("Error"+Thread.currentThread().getStackTrace()[2],paramThrowable.getLocalizedMessage());
  }
});

然后在调用回调时抛出真正的异常,从而产生预期的效果。

如果你想从 cordova plugin/or 中按下菜单按钮使应用程序崩溃 android 你必须在 cordova 项目中编辑几个 classes ].

从 Javascript 调用一些本机函数导致崩溃:

为 Phonegap 编写 Android 本机插件。参考 http://docs.phonegap.com/en/3.0.0/guide_platforms_android_plugin.md.html#Android%20Plugins 创建插件。在 execute 方法中抛出异常。这将在父层中处理(这就是为什么您可以在控制台中看到有关崩溃的日志),因此请进行以下更改以使应用程序崩溃。(两个 classes 都属于 org.apache.cordova 包)

  • 删除 catch(异常 e){} execHelper 方法中的块 pluginManager classs.
  • ExposedJsApiexec方法中移除catch(Throwable e){}块class.

通过此更改,我可以通过 javascript 调用使应用程序崩溃。