0

Phonegapv1.3を使用してPhonegapAndroidアプリを作成しています。システムから特定のファイルを取得して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関数で-

public void setIntegerProperty(String name, int value) {
    this.getIntent().putExtra(name, value);
}

this.getIntent()はnullを返します。何が欠けているのか教えてもらえますか?または、私のユースケースシナリオでは、そのjs関数を実行するにはどうすればよいですか。使用しない場合

super.setIntegerProperty("loadUrlTimeoutValue", 60000, intent);

次に、loadUrlも何もしません。JSが呼び出されないか、タイムアウトになります。

4

1 に答える 1

2

これは、新しい Home オブジェクトをインスタンス化しているためです。オブジェクトはコンストラクターを使用して作成されますが、onCreate メソッドが呼び出されないため、多くの適切なオブジェクトのセットアップが行われません。そのため、NullPointerException が発生しています。

ステータスが OK の新しい PluginResult を返すので、の成功関数が navigator.somefunc(filePath) メソッドを実行できます。その方がはるかに簡単です。

于 2012-01-16T16:02:21.487 に答える