我正在尝试使用以下代码在我的cordova插件中工作。
private void loadPatch() throws IOException {
//File dir = this.cordova.getActivity().getApplicationContext().getFilesDir(); //this throws same error
//File dir = cordova.getActivity().getFilesDir(); //throws same error
File dir = cordova.getActivity().getApplicationContext().getFilesDir();
IoUtils.extractZipResource(cordova.getActivity().getResources().openRawResource(R.raw.patch),
dir, true);
File patchFile = new File(dir, "microphone.pd");
PdBase.openPatch(patchFile.getAbsolutePath());
PdAudio.startAudio(this.cordova.getActivity());
}
然而,当我运行应用程序时,我在
下面的行上得到了nullPointExceptionErrorFile dir = cordova.getActivity().getApplicationContext().getFilesDir();
这是堆栈
Thread [<1> main] (Suspended (exception NullPointerException))
<VM does not provide monitor information>
Libpd.loadPatch() line: 83
Libpd.access$2(Libpd) line: 79
Libpd$1.run() line: 54
Handler.handleCallback(Message) line: 733
Handler.dispatchMessage(Message) line: 95
Looper.loop() line: 136
ActivityThread.main(String[]) line: 5333
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 515
ZygoteInit$MethodAndArgsCaller.run() line: 895
ZygoteInit.main(String[]) line: 711
NativeStart.main(String[]) line: not available [native method]
我正在尝试为libPD库创建一个与android一起工作的插件,因此我需要以上工作来进行核心工作以便继续进行。
答案 0 :(得分:0)
我找到了答案,我想我会发布它,以便将来对某人有用。
当我逐行调试代码时,cordova.getActivity()。getResources()在loadPatch方法中设置为null(不知道如何)。因此,我所做的是将applicationContext作为参数传递给loadPatch方法。
private void loadPatch(Context ctx) throws IOException {
//CODE HERE
}
我从类的execute方法调用loadPatch方法,其中cordova.getActivity()。getApplicationContext()不为null,因此我调用了loadPatch方法,如下所示。
AppContext = this.cordova.getActivity().getApplicationContext();
this.loadPatch(this.AppContext);