Kev*_*vin 11 android android-webview
我在我的Android应用程序中使用addJavascriptInterface来允许JavaScript调用我在本机Java应用程序中创建的函数.
这在Android 2.1中运行良好,但是在Android 2.2中我收到错误消息"错误调用NPObject上的方法!"
当我调用方法调用时,调用本机方法的内部,但异常是在JavaScript中抛出.
muf*_*ffs 11
我收到了这个确切的错误:
Uncaught Error: Error calling method on NPObject!
结果我试图从webview调用JavascriptInterface函数,如下所示:
AndroidJS.populateField(field);
而在Java方面,该函数不接受参数:
public void populateField() {}
简单地允许Java函数接受参数为我解决了这个错误.
例如,
public void populateField(String field) {}
这可能不是,也可能不是,这个错误可能抛出的唯一原因.这就是我如何解决我的具体情况.希望这可以帮助!:)
根据我的经验,这个问题是由Javascript接口带回Javascript不能自动识别的对象引起的.
在Android中,这是由布尔或龙等包装器引起的,与它们的本机版本boolean和long相比.
//This will fail
public Long getmyLongVal() {
return 123456789;
}
//This will work
public long getMyNativeLongVal() {
return 123456789;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果要避免NPObject错误,请将您的包装类移除到Javascript使用的任何方法.
好的,我也有同样的问题,就在今天.
我所做的是将代码放在UI线程中,如下面的代码:
/**
* ???Javascript???method
* Method for Javascript in HTML
* @param java.lang.String - Playlist ID
*/
public int callListByPID(final String pId)
{
Log.i(Constants.TAG, "PAD Playlist ID from HTML: "+pId);
runOnUiThread(new Runnable()
{
public void run()
{
// Put your code here...
}
});
return 1;
}
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题,并希望它可以帮助一些身体...... :-)
我在 Javascript-to-Java 接口 ( ) 中遇到了同样的问题WebView.addJavascriptInterface。
在 Android 2.1 中,一切工作正常,但在 Android 2.2 中,Javascript 无法从此接口调用方法。它返回了一个错误:Uncaught Error: Error calling method on NPObject!
在 Android 2.2 上,WebView 似乎对从接口函数返回的 Boolean 数据类型存在问题。
改变:
public Boolean test_func() { return true; }
Run Code Online (Sandbox Code Playgroud)
... 到:
public int test_func() { return 1; }
Run Code Online (Sandbox Code Playgroud)
...解决了问题。
| 归档时间: |
|
| 查看次数: |
8193 次 |
| 最近记录: |