PhoneGap AndroidプラグインからJS機能を実行する
-
28-10-2019 - |
質問
PhoneGap v1.3を使用して PhoneGap Android App を作成しています。私はシステムから特定のファイルを取得してからJS機能を実行するPhoneGap用のプラグインを書きました。
すべてのプラグインがPhoneGapクラスプラグインを拡張するため、そこから直接JS機能を実行することはできません。そのため、プラグインの機能から、実行 - >
.
PluginResult result = null;
Home home = new Home();
result = new PluginResult(Status.OK);
home.loadPage("pic.jpg");
このホームは、 DROIDGAPを拡張するマイメインクラスです。
自宅では、機能を持っています LOADPAGE
.
public void loadPage(String filePath){
super.setIntegerProperty("loadUrlTimeoutValue", 60000);
super.loadUrl("javascript:navigator.somefunc(\""+filePath+"\");");
}
問題は、DROIDGAPの setintegerproperty関数がNPEを投げていることです。これがログです。
.
01-16 11:41:32.364: W/System.err(13162): java.lang.NullPointerException
01-16 11:41:32.364: W/System.err(13162): at com.phonegap.DroidGap.setIntegerProperty(DroidGap.java:738)
01-16 11:41:32.364: W/System.err(13162): at e2o.mobile.Home.loadSharePage(Home.java:120)
01-16 11:41:32.364: W/System.err(13162): at com.phonegap.plugins.checkImage.CheckUploadImage.execute(CheckUploadImage.java:158)
01-16 11:41:32.364: W/System.err(13162): at com.phonegap.api.PluginManager$1.run(PluginManager.java:150)
01-16 11:41:32.364: W/System.err(13162): at java.lang.Thread.run(Thread.java:1019)
SetIntegerProperty関数でのasculically -
.
public void setIntegerProperty(String name, int value) {
this.getIntent().putExtra(name, value);
}
this.getintent()がNULLを返しています。 私は私が行方不明のものを教えてください。または私のユースケースのシナリオでは、そのJS機能を実行していますか。を使用しない場合
.
super.setIntegerProperty("loadUrlTimeoutValue", 60000, intent);
それではロードurも何もしません。 JSは呼び出されません、またはそれはタイムアウトします。
解決
これは、新しいHomeオブジェクトをインスタンス化しているためです。オブジェクトはコンストラクターを使用して作成されますが、onCreateメソッドが呼び出されないため、適切なオブジェクト設定が多く行われません。そのため、NullPointerExceptionが発生します。
ステータスがOKの新しいPluginResultを返しているので、の成功関数はnavigator.somefunc(filePath)メソッドを実行できます。そうすればはるかに簡単になります。