gpt4 book ai didi

android - 有时会抛出 Uncaught Error : Error calling method on NPObject on Android

转载 作者:IT老高 更新时间:2023-10-28 22:20:50 26 4
gpt4 key购买 nike

我在使用 Android 中的 Webview 时遇到问题,它是 JavascriptInterfaces。

我正在向 JavascriptInterface 传递一个字符串。在调试它时,我在我的 Android 应用程序中收到了正确的字符串。问题:有时我得到一个 Uncaught Error :在 NPObject 上调用方法时出错。

有人知道为什么吗?

Java 中的接口(interface):

public class JSInterfaceGame extends JSInterface {

@JavascriptInterface
public void setShareText(String share){
shareText = share;
if(mJSInterfaceListener != null)
mJSInterfaceListener.onParametersChanged(SHARE_TEXT);
}

Fragment内onCreateView-Method中的初始化:

online = (WebView) rootView.findViewById(R.id.online);
online.setWebViewClient(new WISWebviewClient() {
@Override
public void onStatusChanged(final WebView view, int progress, long duration) {
//unrelated
}
});

WebSettings ws = online.getSettings();
ws.setJavaScriptEnabled(true);
ws.setUserAgentString(USER_AGENT);
ws.setCacheMode(WebSettings.LOAD_DEFAULT);
ws.setRenderPriority(WebSettings.RenderPriority.HIGH);

SharedPreferences settings = getActivity().getSharedPreferences(GameActivity.PREFERENCES, Context.MODE_PRIVATE);

mJSInterface = new JSInterfaceGame();
mJSInterface.setJSInterfaceListener(this); // Defined elsewhere in this class.
mJSInterface.setPlayerName(settings.getString(GameActivity.PREFS_PlAYERNAME, null));
online.addJavascriptInterface(mJSInterface, "JSInterface");
online.loadUrl("http://myurl.something");

在 Javascript 中调用:

function makeShareText() {
var text = "Some text";
console.log(typeof text); // Always a string.
JSInterface.setShareText(text);
}

最佳答案

当您尝试使用从 javascript 接口(interface)调用的方法与 UI 交互时,就会发生这种情况。以这种方式解决它:

class mJSInterface()
{

public void myFunction()
{
runOnUiThread(new Runnable() {

public void run() {
//Code that interact with UI
}
});

}

}

关于android - 有时会抛出 Uncaught Error : Error calling method on NPObject on Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16758397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com