AndroidでWebviewに問題があり、JavascriptInterfacesです。時にはスローUncaught Error:Android上のNPObjectでメソッドを呼び出すときにエラーが発生しました。
文字列をJavascriptInterfaceに渡しています。デバッグするとき、私はAndroidアプリケーション内で正しい文字列を受け取ります。問題:時々、Uncaught Error:NPObjectでメソッドを呼び出す際にエラーが発生することがあります。
なぜ誰が知っていますか?
のJavaのインタフェース:
public class JSInterfaceGame extends JSInterface {
@JavascriptInterface
public void setShareText(String share){
shareText = share;
if(mJSInterfaceListener != null)
mJSInterfaceListener.onParametersChanged(SHARE_TEXT);
}
断片内onCreateView-方法で初期化
:JavaScriptで
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");
コール:あなたがしようとすると、
function makeShareText() {
var text = "Some text";
console.log(typeof text); // Always a string.
JSInterface.setShareText(text);
}
あなたがJavaScriptから呼び出しているとき、すごい、それは検出することが難しいです、 – Pradeep
私は同じ問題がありますが、私は間違いなくUIと対話していません。 – matteo
間違ったパラメータでネイティブのjavascript関数を呼び出すと、同じエラーが発生します。 –