有没有办法将本地存储的结果:getItem() 从 webview 传递给活动



我使用webview在Android中加载页面。加载页面后,本地存储将更新。我想从中检索数据。在kitkat上面,使用evaluateJavascript能够获得数据。它有一个回调。 问题出在kitkat以下的版本,我必须为此使用loadUrl()。

loadUrl("javascript:localStorage.getItem('"+ key +"')");

我想将函数getItem()返回的值传递给调用活动。

你可以做到。首先,您需要像这样将javascript界面添加到Web视图中。假设您正在某个名为FormDetailActivity的活动中加载url:

final FormBridge formBridge = new FormBridge(FormDetailActivity.this);
mWebView.addJavascriptInterface(formBridge, "Android");

formBridge 是一个类的实例,其中编写了从 js 调用的所有方法。

public class FormBridge extends Activity {

private static final String TAG = "FormBridge";
Context mContext;

private FormDetailActivity mFormActivity;

/**
* Instantiate the interface and set the context
*/
public FormBridge(Context c) {
mContext = c;
mFormActivity = (FormDetailActivity) mContext;
}

@JavascriptInterface
public String getLocalStorageFromJs(String someStringFromJs) {
//here you'll get the string from js
}
}

要将密钥从java传递给您的js,您需要在js中创建一个接受密钥参数的方法,然后您可以像这样调用它:

mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:getStringFromLocalStorage('"+key+"')");
}
});

然后从你的js调用这个方法,就像:

function getStringFromLocalStorage(key){
Android.getLocalStorageFromJs(localStorage.getItem(key));
}

相关内容

  • 没有找到相关文章

最新更新